1 在服务器上生成ssh密钥
首先进入Linux系统的用户目录下的.ssh目录下,root用户是/root/.ssh,普通用户是/home/您的用户名/.ssh,我们以root用户为例:
密钥生成命令:
ssh-keygen -f /root/.ssh/daniel -t rsa -b 4096
# -f :生成密钥对的路径及文件命名,也可以不写如:ssh-keygen -t rsa
# -b :指定了长度,也可以不加
-
daniel
:私钥,放在自己电脑上用来登录 -
daniel.pub
:公钥,部署在服务器上用来校验 - passphrase 是给私钥添加一个密码,也可以直接回车,不加密码
2、把公钥拷贝到需要登录的远程服务器或Linux系统上,这里可以使用ssh-copy-id自动完成,也可以手动追加秘钥到远程服务器。
方法一(推荐):
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 1022 root@43.129.xxx.xxx
#-p :指定端口,不是默认端口(22)需要指定端口,如1022
需要输入root的登陆密码确定。
方法二:
进入远程服务器需要SSH登录的用户的目录下,这里仍然用root用户,cd /root/.ssh,执行ls看看目录下是否有authorized_keys文件没有的话则执行以下命令创建:
touch authorized_keys
执行成功会创建空authorized_keys文件,授予600权限(注意:此处权限必须是600):
chmod 600 /root/.ssh/authorized_keys
如果已经有了authorized_keys文件,这直接执行以下的密钥追加工作。
将上面生成的公钥daniel.pub追加到authorized_keys文件中:
cat /root/.ssh/daniel.pub >> /root/.ssh/authorized_keys
3、对/etc/ssh/sshd_config 文件增加配置:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /root/.ssh/authorized_keys
修改完配置后,一定要重启ssh
systemctl restart sshd
4、 密钥准备好了接下来就可以使用密钥登录了
在Windows系统上使用密钥的话要看您使用的工具是否支持密钥登录
命令登陆:
ssh -i ./daniel root@43.129.xxx.xxx
或者ssh root@43.129.xxx.xxx -i ./daniel
注意:daniel是私钥,这里是进入私钥的目录下操作的,如果没在私钥的目录下,请写全目录,比如/opt/daniel,也可以是您自定义的目录。执行命令过程中,如果创建密钥对的时候设置了密码,则会提示您输入密码,没有的话会直接登录。