penguin/utils

my env utils

commit 3a3b1068ab69b56b00da15a803670a7d8cf3cbde

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-09-21T03:09:08Z
subjectReorder ssh calls to avoid entering password multiple times
commit 3a3b1068ab69b56b00da15a803670a7d8cf3cbde
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-09-21T03:09:08Z

    Reorder ssh calls to avoid entering password multiple times
---
 bash/dist/rbashrc                |  2 +-
 bash/dist/rbashrc.asc            | 10 +++++-----
 bash/dist/sources.list           |  2 +-
 bash/sources/42_clipboard_server | 18 ++++++++++++++----
 4 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/bash/dist/rbashrc b/bash/dist/rbashrc
index 3a17206..45a0a66 100755
--- a/bash/dist/rbashrc
+++ b/bash/dist/rbashrc
@@ -18,7 +18,7 @@ RBASH_CONFIG="$RBASH_HOME/config"
 RBASH_ENV="$RBASH_HOME/env"
 RBASH_MERGED="$RBASH_CACHE_DIR/merged"
 RBASH_BIN="$RBASH_HOME/bin"
-RBASH_SOURCES_SUM="dca9d84d6a82b259009ac5eca8fea1f7cea73eb0894ec847dd19ff93cbe3d01f"
+RBASH_SOURCES_SUM="3cbdee204a161551890fa580a5d7f8eddc749afe7aa1579606b4a31f77d8d432"
 
 
 # ---- rbash: bash/core/00_env.bash ----
diff --git a/bash/dist/rbashrc.asc b/bash/dist/rbashrc.asc
index 515d77d..b6a86da 100644
--- a/bash/dist/rbashrc.asc
+++ b/bash/dist/rbashrc.asc
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNATURE-----
 
-iJEEABYKADkWIQR8HpSNhBJUxWnt+97Vz1+xz60nwwUCap6qvBsUgAAAAAAEAA5t
-YW51MiwyLjUrMS4xMiwwLDMACgkQ1c9fsc+tJ8OTTgEA5hKyIj4DMG25Cjw7tVLh
-y8bd9p19zNI4VqnGBsr0iAcA+wQhBETU0R2bPGzWgdIzPa8Q6Z9NuiLwZOJPZkk5
-gFAF
-=6SRP
+iJEEABYKADkWIQR8HpSNhBJUxWnt+97Vz1+xz60nwwUCarCfmBsUgAAAAAAEAA5t
+YW51MiwyLjUrMS4xMiwwLDMACgkQ1c9fsc+tJ8M8zgD/T8V3I2yCBC2jlNykolCq
+HXlm/IS+9iTzDo+JwjW65hwA/R4K6JWzC6AjSdD1oXoVgIHMEC0NeoM/04yzYtk/
+t00A
+=/r4G
 -----END PGP SIGNATURE-----
diff --git a/bash/dist/sources.list b/bash/dist/sources.list
index 76cc499..5399dde 100644
--- a/bash/dist/sources.list
+++ b/bash/dist/sources.list
@@ -13,5 +13,5 @@ b5a488efc0558e2b795a1558e2c91a8aeecc3fd441d437aff3a4749d5eb0bdfc  sources/23_win
 5dbc166ce1b051b54d244ef5dc6b52dfbff03965e9abb0ed891d441dffbf8a76  sources/31_git-utils
 c9c270376844e7c7e3c48b1e86c2ce3e7824dde64e8724c17c5fc95910abd11c  sources/40_go-command
 c0e8ef70466063907b5ed9e52c13532b0019b8cb5975d020899804549a76a37f  sources/41_pivot-command
-fbe7250012b7ab92aece248e56b1d68b32539ab06a5f31415ced0af64bcd37cd  sources/42_clipboard_server
+49d4ef33b1b11778a3f34cf7074a7660afeca99b1c1dbfe8b8f58d2f920685cf  sources/42_clipboard_server
 d02be2a68e8bd1f7e5adacbdd0bdc4f426aabfa1a57709270b673617db6c5352  sources/60_diagnostics
diff --git a/bash/sources/42_clipboard_server b/bash/sources/42_clipboard_server
index 8ed9752..8c1e919 100644
--- a/bash/sources/42_clipboard_server
+++ b/bash/sources/42_clipboard_server
@@ -141,6 +141,7 @@ function stop_clipboard_server {
 		"$SSH_CLIPBOARD_PASTE_PIDFILE"
 }
 
+
 function sshc {
 	init_clipboard_server || return
 
@@ -152,9 +153,20 @@ function sshc {
 		"$@" \
 		>/dev/null 2>&1
 	then
+		echo "-- starting ssh control master"
+
+		command ssh \
+			-M \
+			-S "$control_socket" \
+			-o ControlPersist=10 \
+			-fN \
+			"$@" || return
+
 		echo "-- cleaning stale clipboard sockets"
 
-		command ssh "$@" \
+		command ssh \
+			-S "$control_socket" \
+			"$@" \
 			"rm -f \
 				'$SSH_CLIPBOARD_REMOTE_COPY_SOCKET' \
 				'$SSH_CLIPBOARD_REMOTE_PASTE_SOCKET'" \
@@ -163,10 +175,8 @@ function sshc {
 		echo "-- starting clipboard ssh tunnel"
 
 		command ssh \
-			-M \
 			-S "$control_socket" \
-			-o ControlPersist=10 \
-			-fN \
+			-O forward \
 			-R "$SSH_CLIPBOARD_REMOTE_COPY_SOCKET:$SSH_CLIPBOARD_COPY_SOCKET" \
 			-R "$SSH_CLIPBOARD_REMOTE_PASTE_SOCKET:$SSH_CLIPBOARD_PASTE_SOCKET" \
 			"$@" || return