
我有一個運行 Ubuntu 14.04(我們稱之為destserver
)的目標伺服器和一個也運行 Ubuntu 14.04(我們稱之為bridgeserver
)的隧道伺服器,它具有固定的 IPV4 位址。我目前已將其設定為在啟動時destserver
用於autossh
連接到bridgeserver
:
exec autossh -M 0 -N -R 2222:localhost:22 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -i /path/to/bridgeserver_mybridgeuser_id_rsa mybridgeuser@BRIDGESERVER_IP_ADDR
我在這裡使用密鑰身份驗證,因此上述命令無需密碼即可完成。現在,當我在某個公共網路上的筆記型電腦上時,我可以從中執行以下操作:
ssh -t -o ProxyCommand='ssh mybridgeuser@BRIDGESERVER_IP_ADDR nc localhost 2222' mydestuser@localhost
……這工作正常,除了它要求我輸入兩組密碼:
$ ssh -t -o ProxyCommand='ssh mybridgeuser@BRIDGESERVER_IP_ADDR nc localhost 2222' mydestuser@localhost
mybridgeuser@BRIDGESERVER_IP_ADDR's password:
mydestuser@localhost's password:
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.2.0-42-generic x86_64)
...
現在,我想讓這個目標伺服器可供其他人使用,但我不想共享橋接伺服器(我個人租用的)的任何身份驗證詳細信息,因此我不想共享橋接伺服器的密碼mybridgeuser
。所以我想建立一個像上面這樣的連接 - 除非我只被問到用戶的密碼(例如mydestuser
)destserver
。
是否有一種ssh
語法可以在客戶端上使用,以便我可以destserver
僅使用來自的用戶憑證destserver
(沒有來自 的密碼提示bridgeserver
)進行連接,而無需使用 更改當前設定autossh
?如果需要更改設置,對設置的更改是什麼 -ssh
筆記型電腦上的命令會是什麼樣子?
答案1
嗯,我對此可能是錯的,但我只是在我的初始化文件中寫道:
exec autossh -M 0 -N -R :2222:localhost:22 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -i /path/to/bridgeserver_mybridgeuser_id_rsa mybridgeuser@BRIDGESERVER_IP_ADDR
.... 代替:
exec autossh -M 0 -N -R 2222:localhost:22 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -i /path/to/bridgeserver_mybridgeuser_id_rsa mybridgeuser@BRIDGESERVER_IP_ADDR
....注意,我只是在原來的2222:localhost:22
;之前添加了一個冒號。現在在筆記型電腦上我可以發出:
ssh mydestuser@BRIDGESERVER_IP_ADDR -p 2222
……現在似乎可以工作了,因為它只要求我輸入一個密碼:
$ ssh mydestuser@BRIDGESERVER_IP_ADDR -p 2222
mydestuser@BRIDGESERVER_IP_ADDR's password:
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.2.0-42-generic x86_64)
...
……而以前它不允許我這樣做?
$ ssh mydestuser@BRIDGESERVER_IP_ADDR -p 2222
ssh: connect to host BRIDGESERVER_IP_ADDR port 2222: Connection refused
我不確定為什麼需要這個冒號,所以我仍然想閱讀有關該問題的正確答案...