目的: 禁用 ROOT 登陆,禁用密码登录,使用 SSH-Key 登陆普通账户 A 。 OS: OS X 10.10.5
1 、本地利用 terminal_1 ,通过 SSH 登陆 Vultr 的 ROOT 账户
ssh root@ip_address
#以下操作皆在账户 ROOT 中进行,当禁用 ROOT ,重启 SSH 后,只能用普通账户 A ,
#通过 SSH-Key 登录,密码 123456 ,最后要检验是否真的禁止 ROOT 登陆了
The authenticity of host 'example.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is f9:9b:06:11:75:d4:1f:d1:3c:51:0d:22:4a:13:ff:9f.
Are you sure you want to continue connecting (yes/no) _
[email protected]'s password: _
2 、添加普通账户 A ,并设置 sudo 权限
adduser A
#添加用户 A ,输密码 1234566 ,最后要禁用密码登录,允许 SSH-Key 登陆,检验是否成功禁止密码登录。
echo -e "\nA ALL=(ALL) ALL\n" >> /etc/sudoers #设置 sudo 权限
tail -3 /etc/sudoers
A ALL=(ALL) ALL
command+D 退出 ROOT 账户,用密码登陆 A
暂停 terminal_1 操作
3 、开启 terminal_2 ,在本地生成 SSH-Key 密钥,并设置权限
ssh-keygen -t rsa
#创建密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/user/.ssh/id_rsa):
#回车,路径默认为括号中的内容
Created directory '/user/.ssh '
Enter passphrase (empty for no passphrase):
#输入许可调用私钥的密码
Enter same passphrase again:
#确认密码
Your identification has been saved in /user/.ssh /id_rsa. #私钥 地址
Your public key has been saved in /user/.ssh /id_rsa.pub. #公钥 地址
The key fingerprint is:
05:71:53:92:96:ba:53:20:55:15:7e:5d:59:85:32:e4 root@test
The key's randomart image is:
+--[ RSA 2048]----+
| o o .. |
| . o oo.+ . |
| o.+... = |
| ...o |
| o S |
| . |
| |
| |
+-----------------+
chmod 700 ~/.ssh
chmod 600 /user/.ssh /id_rsa #对私钥赋予 600 的权限,直接拖拽文件到 terminal_2 会显示路径
4 、上传公钥到 Vultr
ssh-copy-id -i /user/.ssh /id_rsa.pub A@IP_address
#把公钥 /user/.ssh /id_rsa.pub
#上传到账户 A 中的 /home/A/.ssh/authorized_keys
The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts. [email protected]'s password: Now try logging into the machine, with "ssh '[email protected]'", and check in:
~/.ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
暂停 terminal_2 的操作,转到 terminal_1
5 、设置公钥权限
chmod 400 /home/A/.ssh/authorized_keys
#将 authorized_keys 的权限设置为对拥有者只读,其他用户没有任何权限
chattr +i /home/A/.ssh/authorized_keys
#保证 authorized_keys 的权限不会被改掉
chattr +i /home/A/.ssh
#设置 ~./ssh 的 immutable 位权限,
#防止重命名 ~/.ssh ,然后新建新的 ~/.ssh 目录和 authorized_keys 文件
6 、按 command+D 退出 A 账户,尝试用 SSH-Key 登陆 A
ssh -i /user/.ssh /id_rsa A@IP_address
#利用 SSH-Key 登陆普通账户 A ,看是否成功
7 、如果成功登陆 A, 编辑 config 文件
vim /etc/ssh/sshd_config #按 i 进入编辑
确保(去掉注释#)
RSAAuthentication yes #允许 RSA 认证
PubkeyAuthentication yes #允许公钥认证
PermitRootLogin no #禁止 ROOT 登陆
PasswordAuthentication no #禁止密码登陆
修改端口, 将 #Port 22 改为 Port 端口号数字 #改掉默认端口
按 esc 退出编辑,:wq #保存并退出 sshd_config
service sshd restart #重启 SSH
8 、在本机设置 config 文件方便 SSH-Key 登陆,转到 terminal_2
vi ~/.ssh/config #在私钥所在的.ssh 文件夹内新建一个 config 文件
按 i 编辑,复制以下内容
Host vps #这个名字随意,感觉像调用函数
HostName IP_address #IP 地址或服务器域名
Port XX #服务器端开放的 ssh 端口,第 7 步中改的端口
User A #登录的用户名
IdentityFile ~/.ssh/ id_rsa #使用的密钥文件密钥文件,本地私钥地址
按 esc 退出编辑,输入:wq 退出并保存
就可以用 ssh vps ,登陆 vps 的 A 账户了
#rm ~/ 加路径就是移除文件
# mkdir 创建文件夹
# vi 打开或创建新文件
# ~表示当前用户的根目录
1
fulajickhz OP 前文 1 2
打算使用 Vultr Tokyo, 浙江联通,正在搜集资料 希望大家能给点建议 谢谢 https://v2ex.com/t/267483#; 打算使用 Vultr 搭建 SS , aria2 ,一些疑问向大家请教 https://v2ex.com/t/270028#reply17 --- @realpg 大兄弟有空帮忙看看 谢谢 |
2
realpg 2016-04-12 21:11:37 +08:00
@fulajickhz
安全策略这方面,我倒是不爱用 key 登陆,一直用户名密码。 只要强度别太变态的弱,修改 ssh 端口,不滥用捆绑木马的山寨客户端,这都不是问题。 因为我的跨墙专用 VPS 都是没有其他功能的,就是一个 linode 日本的纯过墙服务器,所以安全不算啥问题,最不济服务器整体崩溃,用配好的配置文件快速恢复一下三五分钟的事儿。 |
3
fulajickhz OP @realpg 感谢回复,不过我是 Linux 0 基础,所以还是弄安全点好,不怕一万就怕万一。
|
4
billlee 2016-04-12 21:23:10 +08:00
你这个叫做禁止 root 通过 ssh 登录,而不是禁止 root 登录。
|
5
fulajickhz OP @billlee 感谢指正,请问禁止 root 通过 ssh 登录这整个流程有问题吗?
|
6
TakanashiAzusa 2016-04-12 21:36:58 +08:00 via Android
一个问题连发三贴。。。为什么不在一个帖子里 append 呢
|
7
fulajickhz OP @TakanashiAzusa 我怕大家太长不看....
|
8
Kilerd 2016-04-12 22:11:39 +08:00
换 ssh 端口, root 密码强度高, fail2ban 基本就没什么事了。
|
9
Cloudee 2016-04-12 22:20:01 +08:00
`passwd -l root`才是禁止 root 登录…… su 都 su 不过去,只能 sudo su
|