Erik's Blog

增强 Linux 主机安全性的方法

Linux#SSH

记录一下 Linux SSH 相关问题。关于 SSH ,可参照 SSH 详解:服务器、客户端和密钥

修改 SSH 登录端口

默认的 22 端口太不安全,知道的人太多了,换换换~

# 编辑 ssh 配置文件
vim /etc/ssh/sshd_config

# 找到 #port 22,将前面的 # 去掉,然后修改端口 port xxx 为其它
port 222

# 重启 ssh 服务。
/etc/init.d/ssh restart

使用 SSH 登录

高强度密码虽然不易被暴力破解,但容易被冒牌服务器拦截,所以还是没有密钥验证安全。我们要放弃密码验证的方式,改用密钥文件验证。 可以使用 ssh-keygen -t rsa 命令生成密钥对,默认保存在 ~/.ssh 目录,密码默认为空。 id_rsa 是私钥,id_rsa.pub 是公钥。将公钥 id_rsa.pub 追加到 authorized_keys,将私钥 id-rsa 下载到本地。

# 生成密钥文件,位置默认,密码为空
ssh-keygen -t rsa

# 添加公钥到 AuthorizedKeysFile
cat id_rsa.pub >> authorized_keys

下载好的私钥可以用 PuttyXshell 等工具通过密钥登录服务器,导入 id-rsa 后,不需要输入密码,即可登陆服务器。

如果配置完 authorized_keys 一直不生效,可能是因为 .ssh 目录和下面文件的权限问题,因为目录的权限已经超过了 sshd 的要求权限,需要修改权限满足至少下面两个条件 :

  • .ssh 目录的权限必须是 700
  • .ssh/authorized_keys 文件权限必须是 600

配置 SSH 免密码登录

配置了免密码登录,可以方便地进行登陆操作,方便 rsync 自动备份和 Hadoop 主机间互通信等。

# 首先,将本地公钥复制到目标服务器
scp -P (端口号) ~/.ssh/id_rsa.pub username@hostname:/home/username/id_rsa.pub

# 然后,登陆目标服务器,将公钥导入到认证文件
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

# 如果本地权限不正确还要更改权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

测试 : 使用 ssh hostname 可直接登陆目标服务器。

禁用密码登录及 root 远程登录

注意! 注意!! 注意!!! 禁用密码登陆前一定要确定密钥登陆方式是可用的,否则禁用了密码登陆,而密钥登陆又不能用……

# 禁止 root 通过 SSH 远程登录服务器、禁用所有账号通过密码验证远程 SSH 登录服务器

# 编辑 ssh 配置文件
vim /etc/ssh/sshd_config

# 添加或修改 PasswordAuthentication 所在行,禁用 root 远程登录了
PermitRootLogin no 

# 添加或修改 PasswordAuthentication 所在行,禁用所有账号通过密码验证登录,设置成
PasswordAuthentication no

#保存退出

# 重启 ssh 服务
/etc/init.d/ssh restart