目的: 禁用 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) _
root@example.com'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. user@12.34.56.78's password: Now try logging into the machine, with "ssh 'user@12.34.56.78'", 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 打开或创建新文件
# ~表示当前用户的根目录
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.