SSH协议详解 2021-08-24

2021-08-24  本文已影响0人  9_SooHyun

使用ssh key实现远程免密登录涉及以下步骤:

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host devmachine
    HostName 9.9.9.9
    Port 99999
    User root
    PreferredAuthentications publickey  
    IdentityFile /Users/dev/.ssh/id_rsa_devmachine  # 指定私钥文件

配置完成后,ssh root@devmachine甚至直接ssh devmachine就能够登录上9.9.9.9。因为这个命令依据devmachine这个Host读取config内的管理配置,无需再声明IP、端口、私钥和登录用户等参数
ssh的config文件可以存在多个,vscode安装了remote-ssh插件后可以加载ssh的config文件,实现ssh到开发机做远程开发

如果不配置~/.ssh/config,也可以通过指定ssh参数的形式实现登录

指定IP、端口和私钥可以登录:
ssh -i /Users/dev/.ssh/id_rsa_devmachine root@9.9.9.9 -p 99999
通过输入密码登录:
ssh root@9.134.165.116 -p 36000

一点踩坑记录:
部分软件(如weterm、某些版本的vscode)的ssh功能在使用本地私钥时可能会报
Error: Error while signing data with privateKey: error:06000066:public key routines:OPENSSL_internal:DECODE_ERROR
解决方式-网上的办法是转格式
To fix this error, we can convert the private key file from OpenSSH private key format to PEM format.
ssh-keygen -p -m PEM -f target_id_rsa

配置github等代码托管平台使用ssh key免密登录,具体可以参考https://docs.github.com/en/authentication/connecting-to-github-with-ssh


ssh协议认证过程

参考:https://xdev.in/posts/understanding-of-ssh/
简单来说概括为以下两步:


如果配置好公私钥后,用户仍然需要使用账号密码登录,检查

然后重启sshd服务
service sshd restart


更多可以参考 https://github.com/wangdoc/ssh-tutorial

上一篇下一篇

猜你喜欢

热点阅读