ssh login with keys
使用SSH免密码登录linux服务器
关于公钥私钥
简单记忆方法:公钥为锁,位于服务器上任何人可见,生成结果带有.pub后缀;私钥为钥匙,位于个人电脑上仅个人知道
创建公钥私钥对
在个人主机上输入以下命令
ssh-keygen -t ed25519 -f id_ed25519 -C "abc@abc.com"
其中-t
表示生成密钥种类,建议ed25519,性能高于rsa;
-f
表示生成文件名,会生成公钥私钥两个文件,这里为id_ed25519
及id_ed25519.pub
;
-C
表示comment,在登录github等代码托管平台时需要注意,可能会作为代码提交的用户名称(有待验证)
生成文件保存位置为C:\Users\XXX\.ssh
或~/.ssh
,取决于个人主机系统
修改服务器端sshd配置
在服务器端用任何一个文字编辑器打开/etc/ssh/sshd_config
,将以下几个字段前的#
号去掉
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
之后重启sshd服务
sudo service sshd restart
或
sudo systemctl restart sshd.service
上传公钥到服务器端
上传公钥文件至服务器后,在服务器端使用cat id_ed25519.pub >> ~/.ssh/authorized_keys
命令,或者直接使用文字编辑器将公钥文件中内容加入到要登录账号的~/.ssh/authorized_keys
文件中,不存在该文件则人为创建后添加
- 注意需要确认
~/.ssh/authorized_keys
文件权限,建议设置为600sudo chmod 600 ~/.ssh/authorized_keys
(可选)个人主机端ssh设置
个人使用情况下似乎不需要进行设置,此处列出两种方法供参考
在使用ssh命令登录时使用
-i
指定私钥文件修改个人主机端的ssh config文件
C:\Users\XXX\.ssh\config
或~/.ssh/config
,举例为:Host server(别名,用于简单登录) HostName test.com/192.168.1.1(域名或IP) Port 22 User user IdentityFile id_ed25519
此后可以使用
ssh server
连接