Ubuntu Linux下用SSH密匙方式连接远端VPS

souwangwm 2009-10-01

有很多朋友发现自己的VPS会有人来暴力尝试root密码,此教程目的就是屏蔽通过密码登录SSH,而仅使用密匙登录SSH

这样可以大大提高VPS的安全性(程序漏洞除外)

注意:本例本地环境为Linux系统,WIN系统下可参考网络上其他教程

警告:下面的操作有风险,可能导致你无法SSH连接管理你的VPS,建议有VPS操控面板,能在线重装系统的用户尝试,HyperVM 面板里有个默认的帐号密码SSH连接母机后可以跳转至root用户SSH连入你的VPS。

测试环境:本地Ubuntu,远程VPS为CentOS系统

Ubuntu系统禁止直接用root用户登录,我这里举例一个用户名 test

这个 test 用户是你在安装 Ubuntu系统过程中创建的

它有 sudo 的权限(以后 useradd 的用户默认是没有sudo权限的)

第一步,SSH密码形式登录远地VPS,然后进行下列设置:

1.添加一个用户 test 并指定密码

# useradd test

# passwd test

2.给 test用户赋予sudo 权限

# usermod -G wheel test (添加test用户至wheel用户组)

# vi /etc/pam.d/su  (修改配置文件,找到# auth required /lib/security/$ISA/pam_wheel.so use_uid 去掉行首的“#”)

# echo "SU_WHEEL_ONLY yes" >> /etc/login.defs (仅wheel用户组可以使用sudo)

3.切换test用户登录

# su - test

4.在test用户状态下创建密匙对

# ssh-keygen -t rsa  (保存至默认路径/home/test/.ssh/id_rsa,并指定密码)

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (公匙文件拷贝成系统默认调用的文件名)

$ chmod 400 ~/.ssh/authorized_keys (修改权限)

5.切换root用户修改SSH配置文件

$ su

# vi /etc/ssh/sshd_config

(找到#Protocol 2,1 去掉行首“#”,再将行末的“,1”删除,仅使用SSH2方式连接;找到#ServerKeyBits 768去掉行首“#”,并将768改为1024,加强密码强度;找到#PermitRootLogin yes去掉行首“#”,并将yes改为no禁止用root进行登录;找到#PasswordAuthentication yes去掉行首“#”,将yes改为no不允许密码方式的登录;找到#PermitEmptyPasswords no去掉行首的“#”,禁止空密码登录)

6.重启SSH服务

# /etc/rc.d/init.d/sshd restart

第二步,本地环境登录SHEEL创建密匙保存目录引用:

$ cd ~ (进入 test用户家目录)

$ mkdir .ssh (建立文件夹)第三步,ubuntuone.cn把VPS上的密匙 id_rsa 保存在 ~/.ssh/ 目录里(建议用SFTP加密下载)

登录后 su 切换成 root 搞定,收工。

第一次登录的时候会提示公匙改变,yes保存新公匙到本地就可以了。

以后登录直接使用命令  ssh IP 就可以了,不象以前得输入 ssh IP -l root

PS:当然你在本地创建密匙对,然后把公匙传到VPS  /home/test/.ssh/ 目录下,也是一样的。

PS:VPS公匙保存在相同目录下known_hosts文件中,如果碰到公匙改变,可以直接覆盖,或者手动删除后再次访问VPS加载。

相关推荐