盒子
盒子
文章目录
  1. 修改 ~/.ssh/config权限
  2. 修改 ~/.ssh/config
  3. 设置免密码登录
    1. 本地生成公钥和私钥文件
    2. 服务器端配置
    3. 修改文件权限
  4. 最终效果

实现 ssh 免密码登录服务器

修改 ~/.ssh/config权限

~/.ssh/config是 ssh 自己的配置文件,在修改文件之前一定要修改文件的权限以及其所属于的用户,否则会出现问题。

执行

chmod 600 ~/.ssh/config

否则可能出现

Bad owner or permissions on /Users/mac/.ssh/config

执行

chown $USER ~/.ssh/config

否则可能出现

ssh: Could not resolve hostname centos: nodename nor servname provided, or not known

确定 USER 的方法是执行

whoami

如我的结果是 mac 即执行

chown mac ~/.ssh/config

修改 ~/.ssh/config

执行

vim ~/.ssh/config

将下面内容添加进去

Host 起个名字
HostName 你的服务器IP
Port ssh端口
User ssh用户
IdentityFile 私钥文件路径(~/.ssh/id_rsa)

保存退出

设置免密码登录

本地生成公钥和私钥文件

在 Mac OSX 终端(或 iTerm 2 等)中进入 ~/.ssh 目录,输入

ssh-keygen -t rsa

会问一些问题,一路回车就好啦。这样就会在 ~/.ssh 目录中生成 id_rsa(私钥) 和 id_rsa.pub(公钥)文件

服务器端配置

进入服务器端 ~/.ssh 目录,执行

vim authorized_keys

没有的话新建就好了

打开Mac端 ~/.ssh 目录中生成的 id_rsa.pub 文件,将其中的内容复制到服务器端的 authorized_keys 文件中

保存退出即可

要是有其他用户已经新建了这个文件并且写入了内容,只需要在文件最后追加即可

修改文件权限

确保下文件权限正常,在服务器端执行

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

如果无法连接,请在服务器的 /etc/ssh/sshd_config 文件中查看 PubkeyAuthentication 的值是否为 yes ,如果不是,请修改为 yes ,并使用以下命令重启 ssh 服务

/etc/init.d/ssh restart

如果需要禁止密码登录,同样可以编辑 /etc/ssh/sshd_config 文件中 PasswordAuthentication 的值为 no 并重启 ssh 服务

最终效果

例如你在 ~/.ssh/config 中写入的是

Host centos
HostName 8.8.8.8
Port 22
User root
IdentityFile ~/.ssh/id_rsa

那么在终端或者 iterm 中输入

ssh centos

即可直接登录服务器啦

支持一下
万一真的就有人扫了呢
  • 微信扫一扫
  • 支付宝扫一扫