【转】服务器添加新用户用ssh-key 登录,并禁用root用户 密码登录
【转】Linux最高权限用户root,默认可以直接登录sshd。为了提高服务器的安全度,需要对它进行禁止,使得攻击者无法通过暴力破解来获取root权限。
ps: 以下内容皆非原创,只是个人的一个实践过程的一个记录,记录下来一是怕自己忘记,而是给像我那样的小白,可以一篇搞定服务器安全登录问题。主要参考了几个优秀的博客文章,皆在文章后面列出,感谢原创!
一、添加新用户并且修改sshd 默认端口
1.1 新建用户
1,新建一个用户;
#useradd xxx (xxx为你要新建的用户名)
2,为新用户设置密码;
#passwd xxx (xxx为你要新建的用户名)
3,修改SSHD配置,禁止root直接登录
#vi /etc/ssh/sshd_config
查找“#PermitRootLogin yes”,将前面的“#”去掉,段末“yes”改为“no”(不同版本可能区分大小写),并保存文件。
4.为新添加的用户添加root权限
vi /etc/sudoers
#方法一:将下面#号去掉,保存
#%wheel ALL=(ALL) ALL
修改新添加的用户,使属于root组
#usermod -g root xxx
#方法二:直接添加root权限, 直接复制下面root的那行,用户改成我们新添加的用户就可以了
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xxx ALL=(ALL) ALL
权限添加完之后,使用xxx用户登录操作,提示权限不足的时候,就可以直接sudo啦
注:要是找不到sudoers,那么就先安装sudo吧 yum install sudo.
1.2修改sshd默认端口
虽然更改端口无法在根本上抵御端口扫描,但是,可以在一定程度上提高防御。
1.打开sshd配置文件
#vi /etc/ssh/sshd_config
2.找到#Port 22字段删掉#,将22改为其他不被使用的端口
服务器端口最大可以开到65536
3.重启sshd服务
#service sshd restart
4.别忘了修改登陆工具那的端口设置。
二、为新用户添加ssh-key登录,禁止密码登录
1. 生成ssh-key
ssh-keygen -t rsa -f test -C "test key" //-f 文件名 -C 备注 -t 类型
2. 上传公钥到服务器
ssh-copy-id -i ~/.ssh /id_rsa.pub A@IP_address
//这一步会将公钥上传到 A 中的 /home/A/.ssh/authorized_keys
//authorized_keys
文件,是用来存放授权密钥的
3. 设置服务器公钥的权限
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 文件
4. 尝试使用ssh-key登录服务器
ssh -i /user/.ssh /id_rsa A@IP_address
#利用 SSH-Key 登陆普通账户 A ,看是否成功
5.如果成功登陆 A, 编辑 服务器上面的sshd_config 文件
su root #切换root账号
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
6.配置本地ssh config,方便登录。多个 ssh 账号需要配置,在 config 文件里隔行分开写就行
vi ~/.ssh/config #在私钥所在的.ssh 文件夹内新建一个 config 文件 按 i 编辑,复制以下内容 Host vps #这个名字随意,感觉像调用函数 HostName IP_address #IP 地址或服务器域名 Port XX #服务器端开放的 ssh 端口,第 7 步中改的端口 User A #登录的用户名 IdentityFile ~/.ssh/ id_rsa #使用的密钥文件密钥文件,本地私钥地址
Host vps2
…… 按 esc 退出编辑,输入:wq 退出并保存
#ssh vps 就能直接登录vps啦!
另外备注一点, github 用ssh下载的话,会发现permison denied!
检测是由于默认是读取id_rsa 的秘钥,我已经命名成了github,所以找不到就一直连不上
把代码加到缓存ssh-agent 的高速缓存里面
ssh-add ~/.ssh/github
另外一种方法就是在ssh config里面添加我们的github信息
Host personal
HostName github.com
User git
IdentityFile ~/.ssh/work_rsa
测试 ssh - T git@personal 成功
git clone git@personal:MorePainMoreGain/datetimepicker.git #MorePainMoreGain 用户名 datetimepicker 仓库名
参考博客:
Linux 0 基础,在 VPS 上禁止 ROOT 账户,禁用密码登录,新建普通账户 A 并通过 SSH-Key 登陆 A 的方法 (欢迎指正:) OS: OS X 10.10.5