1. SSH通過跳板機登錄遠程服務器
ssh -J username@jump_server_ip_or_name:port username@endpoint_server_ip_or_name -p port
舉例來說,跳板機的用戶名為user1,IP為1.2.3.4,端口為22,目的服務器用戶名為user2,IP為5.6.7.8,SSH端口為22,則命令為:
ssh -J user1@1.2.3.4:22 user2@5.6.7.8 -p 22
當然,如果端口默認就是22,也可以縮略如下:
ssh -J user1@1.2.3.4 user2@5.6.7.8
回車之后,只需要分別輸入登錄跳板服務器的用戶的密碼及登錄目的服務器的用戶的密碼就可以了。
其實就是使用SSH的J參數,跟別的堡壘機的方法有所不同的是,這樣可以大部分主機無需改動而直接進行當做跳板機使用。比如說我這種情況,無法直接從本地登錄目的服務器,但是可以通過可以訪問目的服務器的中間服務器進行登錄目的服務器,怎么樣,簡單吧哈哈。
2. SCP通過跳板機登錄遠程服務器
既然可以SSH通過跳板服務器登錄遠程服務器,那如果我們使用SCP進行上傳下載是否也可以使用相同的方式連接呢。
摸索了一下,發現還真的可以,格式如下:
scp -P endpoint_server_port -o 'ProxyJump user1@jump_server_ip_or_name -p port' file.txt user2@endpoint_server_ip_or_name:~
舉個例子就是:
scp -P 22 -o 'ProxyJump user@1.2.3.4 -p 22' file.txt user2@5.6.7.8:~
省略一些參數就是:
scp -o 'ProxyJump user@1.2.3.4' file.txt user2@5.6.7.8:~
其余跟普通scp命令一致,沒啥特別的。
這種方法除了適用我上述說的本地無法直接訪問目的服務器的方法之外,還能作為一個中轉節點對文件上傳下載進行加速,比如說,本地下載目的服務器上一個大文件,而本地到目的服務器網絡並不是很理想,就可以找一個中轉服務器加速本地到目的服務器之間的網絡連接。
3. sshd_config配置
正常來說,上述命令是可以直接使用的,但是如果遇到不能直接將中間服務器當做跳板機的情況,可以檢查一下跳板機的sshd_config文件,記得將如下內容的值改成如下形式:
vim /etc/ssh/sshd_config
AllowTcpForwarding yes
PermitTunnel yes
改完之后重啟一下跳板機的SSH服務端就好了。