mac 免密码登录 vps (SSH 公钥认证)

2017-03-09

使用root 免密登录,禁止root 的情况又不一样,有机会写出来。
  • 昨天刚弄了一个新的 vps ,晚上挂机自动安装 lnmp,一早看就 cpu 异常,果断是机器在暴力破解 root ,登录进去,查看
1
tail -f /var/log/secure
  • 果然有许多:
1
Failed password for root from 116.31.116.34 port 41014 ssh2

远程服务器:centOS,本地macOS,iTerm2

改端口。

打开/etc/ssh/sshd_config文件:

1
2
ssh root@xxx.xxx.xxx.xxx #输入密码
cd /etc/ssh/sshd_config

找到:Port 22 #SSH端口,修改为非常用的高位端口:1024-65535之间的一个。先不重启 ssh 服务。

配置 SSH 密钥登录远程服务器

在Mac上生成公钥和私钥,如果没有的话

1
sh-keygen -t rsa -C "your_email@example.com"

生成密钥对,其中 -t 指定密钥类型,默认即 rsa ,可以省略,-C 设置注释文字,比如你的邮箱,且默认为 2048 字节,可改为4098 字节, -p 4098

可以接受除密码之外的所有内容的默认值,此处的密码是给本地密钥加的密码,如果不要,一路回车下去,

  • 新生成的SSH密钥位于 /.ssh/目录中。您将在/.ssh/id_rsa文件中找到私钥,并在文件中找到公钥~/.ssh/id_rsa.pub。

将公钥发送到要远程登陆的服务器上

  • 登录服务器:
1
2
3
4
5
6
7
cd ~

#验证您的目录是否存在:

ls -al #显示隐藏文件,若不存在:

mkdir .ssh
  • 本机 mac:将公钥复制到远程机器~/.ssh/authorized_keys上的文件中
1
scp ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx:~/.ssh

scp 命令是需要输入 服务器 对应账户的密码的。

  • 在服务器建立 authorized_keys 映射,即将密钥复制到 authorized_keys 文件
1
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • 配置:在服务端打开 authorized_keys
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cd /etc/ssh/sshd_config
#修改以下设置:

#禁用密码验证
PasswordAuthentication no

#启用密钥验证
RSAAuthentication yes

存放该用户可以用来登录的RSA/DSA 公钥
PubkeyAuthentication yes

#指定公钥数据库文件
AuthorsizedKeysFile .ssh/authorized_keys

#是否允许 Public Key
PubkeyAuthentication yes

#不允许空密码
permiemptypasswords no
  • 重启 ssh 服务
1
2
systemctl restart sshd #没有任何输出。检查是否重启
systemctl status sshd #显示 active 时间,是刚才的时间 ok
  • 避免出错登录不上去,再开一个命令窗口测试登录,此处为:iTerm2
1
ssh -p端口 root@xxx.xxx.xxx.xxx

iTerm2 设置快捷登录

  • iTerm2 中设置: preferences -> profiles -> 左下角,点击 +

  • name: 取个别名

  • command ,command 填写:ssh -p端口 root@xxx.xxx.xxx.xxx

  • 直接在 iTerm2 上方菜单 Profiles 选择服务器快捷登录,非常方便。


参考:

win环境下,使用方式

博文