ssh跳板机及vscode,xshell隧道的全方位配置

ssh跳板机及vscode,xshell隧道的全方位配置

公钥与私钥使用场景:

  1. 私钥用来进行解密和签名,是给自己用的。
  2. 公钥由本人公开,用于加密和验证签名,是给别人用的。
  3. 当该用户发送消息时,用私钥签名消息,别人用他给的公钥验证签名,可以保证该信息是由他发送的。当该用户接受消息时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他接收到。

签名场景参考这里

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
  • server端存放authorized_keys,里面写入了所有client端的公钥,即生成的id_rsa.pub

步骤

  1. 使用ssh-keygen -t rsa生成密钥
  • 其中-t是指定加密算法
  • 中间会询问保存密钥地址,为避免冲突,可以改个名字,但是后续需要把私钥改成id_rsa才能用
  • 然后询问passphrase这个不填也可以

passphrase是为了保护私钥的安全. 如果设置了passphrase, 当载入私钥时需要输入, 否则不需要输入

  1. 把公钥放到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博客

简要步骤:

  1. 新建添加跳板机会话

  1. 在跳板机属性里添加隧道转移规则

侦听端口选个没人用的就可以(1024-65535为用户端口)

  1. 新建添加目标机会话

其中用户身份验证使用password还是public key都ok

posted @ 2021-11-28 15:40  Doonnie  阅读(1011)  评论(0编辑  收藏  举报