su 切换到需要设置密钥登陆的用户su usertest
2. 使用ssh-keygen命令创建密钥对ssh-keygen -t rsa -b 4096 -C "name@***.com"
–t type
指定用于生成密钥的算法,其中 type 是 rsa、dsa 和 rsa1 中的一种。rsa1 类型仅用于 SSHv1 协议。
–b bits
指定要创建的密钥的位数。最小位数为 512 位。通常,2048 位足以满足安全需要。密钥大小超过该值并不会提高安全性,反而会降低速度。缺省值为 2048 位。
3. 强烈建议使⽤默认路径来保存公钥与密钥⽂件,所以,当提⽰您"Enter a file in which to save the key”时,点击Enter键即可。Enter file in which to save the key (~/.ssh/id_rsa): [Press enter]
4. 您会被要求输⼊⼀个密码,非必须,您可以不输⼊。直接点击Enter键继续。Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
5. 接下来控制台会打印⼀些验证信息,类似这个样⼦:+---[RSA 4096]----+
| .o o |
| o.+.* |
| o oo+ . |
| . .. |
| E.. .S |
|.++*o=o. |
|++BBB+ |
|.*B=*.. |
|o*B+ o.. |
+----[SHA256]-----+
此时 在 ~/.ssh/目录下会多出来id_rsa(私钥,自己保存起来,不能外泄)和id_rsa.pub(公钥)两个文件
6. 保存配置的私钥到本机#sz命令需要安装lrzsz,或者用ftp以及一些其他工具来保存
sz ~/.ssh/id_rsa
7. 将id_rsa的内容复制到 authorized_keys文件中,并把权限改为600cd ~/.ssh
cat id_rsa.pub >> authorized_keys
#为保证连接成功修改下文件权限
chmod 600 authorized_keys
chmod 700 ~/.ssh
8. 修改/etc/ssh/sshd_config配制文件
需要切换到root用户下来修改#给自己写入的权限
chmod +w /etc/ssh/sshd_config
修改前一定多打开几个root账户的对话, 以防修改错误自己登不上去.
或者把配置中的 PermitRootLogin yes 打开,允许以root登录,记住修改成功一定要把该项改成 no .
把sshd_config文件中的配置改成如下# 打开秘钥登录
RSAAuthentication yes
PubkeyAuthentication yes
#禁止密码登录(最好是尝试证书链接成功了再修改)
PasswordAuthentication no
ChallengeResponseAuthentication no
8. 修改完成保证可以正常连接了,需要把/etc/ssh/sshd_config 文件改成chmod 600 /etc/ssh/sshd_config
9. 重启sshd服务systemctl restart sshd
如果你创建密钥对的时候输入了密码,那么使用xshell等等方式登录的时候,会让你输入下秘钥的密码.
补充: 2020-11-07
配置快捷登录
每次登陆都需要指定host,port,user等信息,太麻烦了!! 我们可以配置ssh快捷登录更方便的登录Linux.
在本地 ~/.ssh/config 配置文件中添加ssh服务器信息,格式:Host abc #自定义别名
HostName 192.168.1.52 #替换为你的ssh服务器ip或domain
Port 5654 #ssh服务器端口,默认为22
User hahaha #ssh服务器用户名
IdentityFile ~/.ssh/id_rsa #对应的私钥文件
#ssh本地端口转发
#将远程服务器上的 3388端口绑定到本地的10.0.0.1:3306
LocalForward 10.0.0.1:3306 127.0.0.1:3388
#ssh远程端口转发
#将本地的10.0.0.1:1081端口绑定到远程服务器127.0.0.1:1081
RemoteForward 127.0.0.1:1081 10.0.0.1:1081
这时候就可以使用配置文件中自定义的别名来登录了:ssh abc
这样就可以登陆了!! 方便快捷!
更改参数参考: man ssh_config 5