每次登录远程机器都使用密码的话,十分不方便,也有可能存在一定的安全隐患。如果使用客户端的话,可以用 SecureCRT 等软件统一管理,本文主要通过在终端中配置公钥的方式,实现免密登录。

在本地生成密钥

在本地的用户家目录下创建 .ssh 文件夹,这是一个隐藏文件夹。
进入到 .ssh 文件夹,执行 ssh-keygen 命令生成密钥,无需输入口令或密码,一直回车即可跳过。最终生成了两个文件:

  • id_rsa :私钥
  • id_rsa.pub :公钥

在本地创建配置文件

同样在本地的 .ssh 文件夹下,创建 config 文件。

1
2
3
4
5
6
# config文件

HOST login_alias # 登录别名
    HostName xx.xx.xx.xx # 远程机器ip
    User xxxx # 登录的用户
    Port 123123 # 端口

远程机器配置

在远程机器的用户家目录下创建 .ssh 文件夹。
进入到 .ssh 文件夹,创建 authorized_keys 文件,将本地生成的公钥内容粘到authorized_keys 文件中。

文件访问权限设置

远程机器上,.ssh 文件夹和 authorized_keys 文件的读写权限也是影响配置成功率的一个重要因素。经验来讲,组用户和其他用户不能添加写权限。修改权限:

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

无密码登录

根据本机 config 中的配置,使用命令 ssh login_alias 即会登录到远程机器的 anthony 用户下。

更改默认SSH端口

Linux 的默认SSH端口都是22,但在互联网上会有很多扫22端口的,使用lastb命令即可查看到尝试登入系统失败的信息。

试想假如某天SSH爆出了一个严重漏洞,但自己没有及时反应的话,那么后果可能会比较严重,所以更改默认SSH端口也是增加服务器安全性的一个手段。

修改SSH端口配置文件

1
vim /etc/ssh/sshd_config

修改配置文件Port字段即可。

添加新端口后,建议先保留22端口,待验证新端口可正常登陆后,可删掉22端口。

重启SSH服务:

1
/etc/init.d/ssh restart