Windows Terminal:SSH连接远程服务器( 二 )


最后,就会生成私钥和公钥,屏幕上还会给出公钥的指纹,以及当前的用户名和主机名作为注释,用来识别密钥的来源 。
公钥文件和私钥文件都是文本文件,可以用文本编辑器看一下它们的内容 。公钥文件的内容类似下面这样 。
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvpB4lUbAaEbh9u6HLig7amsfywD4fqSZq2ikACIUBn3GyRPfeF93l/weQh702ofXbDydZAKMcDvBJqRhUotQUwqV6HJxqoqPDlPGUUyo8RDIkLUIPRyqypZxmK9aCXokFiHoGCXfQ9imUP/w/jfqb9ByDtG97tUJF6nFMP5WzhM= username@shell.isp.com上面示例中,末尾的username@shell.isp.com是公钥的注释,用来识别不同的公钥,表示这是哪台主机(shell.isp.com)的哪个用户(username)的公钥,不是必需项 。

博主在使用时删除了末尾的注释,亲测可以使用
注意,公钥只有一行 。因为它太长了,所以上面分成三行显示 。
手动上传公钥生成密钥以后,公钥必须上传到服务器,才能使用公钥登录 。
OpenSSH 规定,用户公钥保存在服务器的~/.ssh/authorized_keys文件 。你要以哪个用户的身份登录到服务器,密钥就必须保存在该用户主目录的~/.ssh/authorized_keys文件 。只要把公钥添加到这个文件之中,就相当于公钥上传到服务器了 。每个公钥占据一行 。如果该文件不存在,可以手动创建 。
用户可以手动编辑该文件,把公钥粘贴进去,也可以在本机计算机上,执行下面的命令 。
$ cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"上面示例中,user@host要替换成你所要登录的用户名和主机名 。
注意,authorized_keys文件的权限要设为644,即只有文件所有者才能写 。如果权限设置不对,SSH 服务器可能会拒绝读取该文件 。
$ chmod 644 ~/.ssh/authorized_keys只要公钥上传到服务器,下次登录时,OpenSSH 就会自动采用密钥登录,不再提示输入密码 。
$ ssh -l username shell.isp.comEnter passphrase for key '/home/you/.ssh/id_dsa': ************Last login: Mon Mar 24 02:17:27 2014 from ex.ample.comshell.isp.com>上面例子中,SSH 客户端使用私钥之前,会要求用户输入密码(passphrase),用来解开私钥 。
需要注意的是在Windows terminal中ssh-copy-id无法使用,只能手动上传
密钥创建示例附上我的密钥创建实例:
PS C:Usersadmin> ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (C:Usersadmin/.ssh/id_rsa): C:UsersadminOneDrive/.ssh/id_rsaEnter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved inC:UsersadminOneDrive/.ssh/id_rsa.Your public key has been saved in C:UsersadminOneDrive/.ssh/id_rsa.pub.The key fingerprint is:***The key's randomart image is:***PS C:Usersadmin> cat C:UsersadminOneDrive/.ssh/id_rsa.pub//此步显示所创建的公钥,复制所有内容PS C:Usersadmin> ssh kerm@52.184.**.**kerm@HK1:~$ sudo -iroot@HK1:~# mkdir -p ~/.sshroot@HK1:~# nano ~/.ssh/authorized_keys//将之前复制的公钥贴入,我将=号后的内容删除,因为有多台设备利用这个公钥登录root@HK1:~# chmod 644 ~/.ssh/authorized_keys
备注:为了实现多端同步免密登录,这里我密钥的存储位置选为了OneDrive同步文件夹 。这样虽然不安全,但是很方便 。
将登录信息写入配置文件,一键登录
也可以直接编辑配置文件 。新版既然已经提供GUI,我就直接在GUI操作了 。
导航栏下拉进入设置-配置文件-添加新配置文件-新建空配置文件 。在命令行一栏填入:
ssh -i 密钥路径 user@ip示例:ssh -i C:UsersadminOneDrive/.ssh/id_rsa root@52.184.***.**其他参数,例如名称、外观可以参照另外一篇文章进行自定义 。这里不做赘述 。
保存,导航栏下拉找到对应配置名称即可一键连接 。也可以使用快捷键:
Windows Terminal:SSH连接远程服务器

文章插图
 
效果
同步问题理论上是可以多端同步的,但是目前我两台电脑上的配置还没有同步,不知道为什么 。
附录参考文章
  1. Settings synchronization · Issue #1721 · microsoft/terminal (github.com)
  2. SSH 密钥登录 - SSH 教程 - 网道 (wangdoc.com)
版权信息本文原载于kermsite.com,复制请保留原文出处 。




推荐阅读