使用密钥登录服务器
生成 SSH Key
打开本地终端,使用cd ~/.ssh
进入ssh目录,使用以下命令生成公钥和私钥:
1
ssh-keygen
该命令默认使用-t rsa
。
如果后面使用参数 -f
,-f
参数指定文件名,例如 ssh-keygen -f 1_rsa
,则会默认产生名称为 1_rsa
的密钥和公钥。
然后会要求输入 passphrase,即密钥密码,可以选择为空(按回车即可)。若输入密钥密码,则每次使用密钥登录服务器时都需要输入密钥密码。
该执行结果在当前目录下生成私钥和公钥id_rsa
和id_rsa.pub
。
将公钥拷贝到服务器
在服务器端的用户目录下,输入ls -a
查看,若无.ssh
文件夹,则输入以下命令:
1
2
3
4
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
若存在.ssh
文件夹以及authorized_keys
文件,则直接将上一节中生成的ssh公钥id_rsa.pub
的内容复制到authorized_keys
文件内。
本地使用密钥登录服务器
一般生成了密钥后,本地终端就可以直接通 ssh
命令登陆服务器了。
在 VS Code工具或者其他终端工具中登录服务器前,首先配置本地的ssh配置文件。
一般配置文件在~/.ssh/config
文件中,在文件最后追加:
1
2
3
4
Host XXX
HostName xxx.xxx.xxx.xxx
User root
IdentityFile ~/.ssh/id_rsa
Host
字段为名称,HostName
为服务器IP地址,User
为登录名,IdentityFile
为私钥文件位置。
如果使用默认的 Key id_rsa
,可不指定私钥文件位置。
使用密钥登录时,如果在第一步指定了密钥密码 passphrase,则还需要输入密钥密码。
禁止密码登录
为了防止他人使用密码登录服务器,可以配置ssh禁止密码登录。注意在配置之前,必须保证使用密钥可以登录服务器,否则禁止密码登录后可能会造成无法登录服务器。
在Ubuntu系统中,编辑文件/etc/ssh/sshd_config
文件:
1
vim /etc/ssh/sshd_config
找到并修改这一行:
1
PasswordAuthentication yes
改为:
1
PasswordAuthentication no
然后退出vim,返回终端,重启ssh服务:
1
systemctl restart sshd.service
此时无法使用密码登录服务器了。
查看登陆错误日志
Ubuntu
系统下,使用以下命令可以查看错误登陆的日志:
1
cat /var/log/auth.log | grep "Failed password"