ssh跳板機及vscode,xshell隧道的全方位配置
公鑰與私鑰使用場景:
- 私鑰用來進行解密和簽名,是給自己用的。
- 公鑰由本人公開,用於加密和驗證簽名,是給別人用的。
- 當該用戶發送消息時,用私鑰簽名消息,別人用他給的公鑰驗證簽名,可以保證該信息是由他發送的。當該用戶接受消息時,別人用他的公鑰加密,他用私鑰解密,可以保證該信息只能由他接收到。
簽名場景參考這里
ssh
ssh公私鑰連接原理
refer:An Illustrated Guide to SSH Agent Forwarding (unixwiz.net)Public Key Access部分
相關文件
-
client端存放私鑰
id_rsa
文件(文件名不能變),也就是說一個client只有一個私鑰就可以- windows一般存放在
C:/Users/你的用戶名/.ssh
- linux存放在
/home/你的用戶名/.ssh
- windows一般存放在
-
server端存放
authorized_keys
,里面寫入了所有client端的公鑰,即生成的id_rsa.pub
步驟
- 使用
ssh-keygen -t rsa
生成密鑰
- 其中
-t
是指定加密算法 - 中間會詢問保存密鑰地址,為避免沖突,可以改個名字,但是后續需要把私鑰改成
id_rsa
才能用 - 然后詢問
passphrase
這個不填也可以
passphrase
是為了保護私鑰的安全. 如果設置了passphrase, 當載入私鑰時需要輸入, 否則不需要輸入
- 把公鑰放到server兩種方法:
ssh-copy-id -i pub_key_file username@remotemachine
- 或者新建
/home/用戶名/.ssh/authorized_keys
,然后把id_rsa.pub
復制到目錄下,輸入命令cat id_rsa.pub>>authorized_keys
Vscode免密鑰登錄
將上面步驟完成后,再配置ssh configuration file
Host JumpMachine
HostName XXX.XXX.XXX.XXX
Port XXX
User root
IdenytityFIle C:\Users\你的用戶名\.ssh\id_rsa
Host TargetMachine
HostName XXX.XXX.XXX.XXX
Port XXX
User root
IdenytityFIle C:\Users\你的用戶名\.ssh\id_rsa #用的還是自己電腦的私鑰,不是跳板機的
ProxyCommand ssh -W %h:%p JumpMachine
- 一旦vscode server被kill后無法登錄:
Resolver error: Error: The VS Code Server failed to start
解決方案:
打開VS Code菜單"View"->“Command Palatte”->“Kill VS Code Server on Host”
選擇出問題的遠程服務器殺掉那個上面的VS Code server。然后重新嘗試登陸
Xshell隧道
場景:
跳板機和目標應用服務器在同一局域網下
只有使用隧道才能顯示目標機的xftp文件夾,否則就還是跳板機的文件夾
原理就是指定跳板機的一個用戶端口隧道連接目標機的ssh服務端口
以下參考這篇博客:
運維管理之隧道映射訪問內網服務器,通過xshell,xftp可視化管理服務器文件_U.R.M.L-CSDN博客
簡要步驟:
- 新建添加跳板機會話
- 在跳板機屬性里添加隧道轉移規則
偵聽端口選個沒人用的就可以(1024-65535為用戶端口)
- 新建添加目標機會話
其中用戶身份驗證使用password還是public key都ok