ssh跳板机及vscode,xshell隧道的全方位配置
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