免密登录
先进入 /Users/USERNAME/.ssh 目录,看一下有没有 id_rsa 和id_rsa.pub 这两个文件 如果有请忽略 步骤一
步骤一
我的是mac 终端命令行执行 然后一路回车
ssh-keygen -t rsa
进入以下目录
/Users/USERNAME/.ssh
会生成有两个文件 私钥id_rsa、公钥id_rsa.pub
步骤二
把公钥拷贝到需要登录的远程服务器或Linux系统上,这里可以使用ssh-copy-id
ssh-copy-id -i/Users/USERNAME/.ssh/id_rsa.pub root@ip
但是ssh-copy-id默认端口是22,如果您的SSH端口不是22,也就是远程服务器端口修改成其他的了,那就要得加上 -p +端口。
进入远程服务器需要SSH登录的用户的目录下,这里仍然用root用户,cd /root/.ssh,执行ls看看目录下是否有authorized_keys文件,如果没有的话则执行以下命令创建:
touch authorized_keys
执行成功会创建空authorized_keys文件,授予600权限(注意:此处权限必须是600):
chmod 600 /root/.ssh/authorized_keys
如果已经有了authorized_keys文件,这直接执行以下的密钥追加工作。
将上面生成的公钥id_rsa.pub追加到authorized_keys文件中:
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
如下图所示,注意图中红色箭头处,是>>而不是>,双尖括号>>表示像向文件中追加:
单尖括号>表示将文件内容全部替换掉;也就是说使用单尖括号>,authorized_keys文件里面如果原来有内容的话就全部不在了。
测试是否成功
ssh root@ip
若可直接登录 就完成了免密登录
如果此时想让其他人也免密登录 可以把本地的id_rsa 文件拷贝给别人 执行命令
ssh -i id_rsa root@ip
也是可以免密链接
当然 要记得修改服务器上的 sshd 配置 把允许秘钥登录打开
编辑配置文件
vim /etc/ssh/sshd_config
将其中几个参数配置改为以下配置
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
重启ssh配置生效
service ssh restart
秘钥登录
有两种 但也要注意 要打开 允许秘钥登录的配置
1.就是上文免密登录中的最后,利用 私钥登录
2.从服务器下载
[username@host ~]$ cd ~/.ssh
[username@host ~]$ ssh-keygen // 一路回车
[username@host ~]$ cat id_rsa.pub >> authorized_keys
[username@host ~]$ chmod 600 authorized_keys
[username@host ~]$ chmod 700 ~/.ssh
// 下载私钥
[local@host ~]$ sudo scp -i USERNAME@HOST /usr/USERNAME/.ssh/id_rsa /LOCAL_PATH/id_rsa
// 测试秘钥登录
sudo ssh USERNAME@HOST -i /LOCAL_PATH/id_rsa
禁止密码登录
服务器修改配置
vim /etc/ssh/sshd_config
PasswordAuthentication no #修改之前一定要确认你的秘钥可以正常使用
重启ssh生效
service ssh restart