Linux 0 基础,在 VPS 上禁止 ROOT 账户,禁用密码登录,新建普通账户 A 并通过 SSH-Key 登陆 A 的方法 (欢迎指正:) OS: OS X 10.10.5

2016-04-12 21:00:53 +08:00
 fulajickhz

目的: 禁用 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   打开或创建新文件
# ~表示当前用户的根目录
4167 次点击
所在节点    问与答
10 条回复
fulajickhz
2016-04-12 21:02:50 +08:00
前文 1 2

打算使用 Vultr Tokyo, 浙江联通,正在搜集资料 希望大家能给点建议 谢谢

https://v2ex.com/t/267483#;

打算使用 Vultr 搭建 SS , aria2 ,一些疑问向大家请教

https://v2ex.com/t/270028#reply17

---
@realpg 大兄弟有空帮忙看看 谢谢
realpg
2016-04-12 21:11:37 +08:00
@fulajickhz
安全策略这方面,我倒是不爱用 key 登陆,一直用户名密码。
只要强度别太变态的弱,修改 ssh 端口,不滥用捆绑木马的山寨客户端,这都不是问题。
因为我的跨墙专用 VPS 都是没有其他功能的,就是一个 linode 日本的纯过墙服务器,所以安全不算啥问题,最不济服务器整体崩溃,用配好的配置文件快速恢复一下三五分钟的事儿。
fulajickhz
2016-04-12 21:20:40 +08:00
@realpg 感谢回复,不过我是 Linux 0 基础,所以还是弄安全点好,不怕一万就怕万一。
billlee
2016-04-12 21:23:10 +08:00
你这个叫做禁止 root 通过 ssh 登录,而不是禁止 root 登录。
fulajickhz
2016-04-12 21:34:37 +08:00
@billlee 感谢指正,请问禁止 root 通过 ssh 登录这整个流程有问题吗?
TakanashiAzusa
2016-04-12 21:36:58 +08:00
一个问题连发三贴。。。为什么不在一个帖子里 append 呢
fulajickhz
2016-04-12 21:40:54 +08:00
@TakanashiAzusa 我怕大家太长不看....
Kilerd
2016-04-12 22:11:39 +08:00
换 ssh 端口, root 密码强度高, fail2ban 基本就没什么事了。
Cloudee
2016-04-12 22:20:01 +08:00
`passwd -l root`才是禁止 root 登录…… su 都 su 不过去,只能 sudo su
billlee
2016-04-12 23:15:20 +08:00
@Cloudee 然而 -l 是禁用密码,仍然可以用其它凭据认证,比如说 ssh key.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/270553

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX