ssh远程安全登录,使用密钥登陆

  • 内容
  • 评论
  • 相关

在linux服务器下,我们经常使用远程登录服务器,那么经常使用的小工具就是ssh,这个ssh非常方便,使用ip和用户名密码即可登录,但是这样也有缺点,这很容易被一些hack暴力破解,因此我们需要一些安全机制,这里我们简单设置两点。
1、很多同学在ssh远程登录的时候会使用root登录,殊不知这样很危险,特别容易被暴力破解。因此我们需要禁止掉root远程登录服务器,ssh的相关配置都在/etc/ssh下面,其中sshd_config是服务器端的配置文件。我们如果要禁止root远程登录,可以这样配置:

vim /etc/ssh/sshd_config
PermitRootLogin yes

将以上的配置改为

PermitRootLogin on

2、禁止了root远程登录,我们再开启密钥文件验证登录。同样的编辑这个文件。

vim /etc/ssh/sshd_config

将这三行的注释去掉

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

这样我们就开启了密钥登录验证。
okay下面我们来建立公钥和密钥对。
因为我们禁止了ssh的root远程登录,因此我们需要一个普通账户,可以新建一个账户

useradd xiaotiejiang

例如这里我要添加一个用户,这个用户我不想使用key登陆,可以这样:

useradd gaoxueping                                //添加用户名
passwd gaoxueping                               //设置密码,会自动提示,你输入密码的
usermod -g root gaoxueping                 //设置加入root组
groups gaoxueping                               //查看用户所在的组
userdel  -r gaoxueping                     //删除用户和用户所有的相关信息

你可以查看当前系统下可以ssh登陆的用户:

awk 'BEGIN{FS=":"}$7~/sh$/{print $1}' /etc/passwd

附:如果添加一个ftp账号(当然要安装了vsftp):

adduser –g ftp –d /home/test username

这个用户将被添加到ftp组,他的目录为/home/test/
然后给这个用户增加一个密码:

passwd username

当然,如果你要禁止这个用户可以切换到上一级目录例如/home/,可以修改配置文件:

vim /etc/vsftpd/vsftpd.conf

添加:

chroot_list_enable=NO
chroot_local_user=YES

如果删除这个账号使用

userdel -r xiaotiejiang

有时候正确安装了vsftpd,也按照争取的方法建立了ftp用户在登录的时候报出错误:

500 OOPS:cannot change directory:/root

这是为什么呢,我们先查看 SELinux 的状态:

#查看ftp的状态
sestatus -b | grep ftp

这个时候你会看到:

ftp_home_dir          off  
tftpd_disable_trans   off

okay,我们将其开启:

setsebool -P ftpd_disable_trans on

此时我们可能会遇到以下错误:

libsemanage.dbase_llist_set: record not found in the database (No such file or directory).
libsemanage.dbase_llist_set: could not set record value (No such file or directory).
Could not change boolean ftpd_disable_trans
Could not change policy booleans 

可是试一下这样解决:

/usr/sbin/setsebool -P ftp_home_dir 1

如果不能解决,就这样做:

setsebool allow_ftpd_full_access 1
setsebool allow_ftpd_use_cifs 1
setsebool allow_ftpd_use_nfs 1
setsebool -P ftp_home_dir 1
setsebool httpd_enable_ftp_server 1
setsebool tftp_anon_write 1
service vsftpd restart

然后重启服务即可。
或者

setsebool -P  ftp_home_dir  on

现在ftp应该可以正常连接和上传了,那我们也再转回到本文正题:
然后切换到这个账号:

ssh-keygen -t rsa

这个命令是基于openssh的,centos下默认安装,可以查询一下:

rpm -qa | grep ssh
openssh-4.3p2-82.el5
openssh-clients-4.3p2-82.el5
openssh-server-4.3p2-82.el5

接下来会询问你密钥文件存储位置以及你的登录密码,公钥密钥对位置默认即可,直接敲回车。密码自己设一下。
这时候在你的用户名目录下的.ssl/下面就多了两个文件

id_rsa   id_rsa.pub

其中我们需要将公钥文件改个名字,

mv id_rsa.pub authorized_keys

这个公钥文件保存在服务端,是为了和客户端的密钥文件进行验证的。okay,我们将id_rsa文件下载到本地(如果权限不够,请切换至root账户,若ftp到本地失败,请更改文件权限),然后使用puttygen.exe,点击conversions→import key,导入id_rsa生成*.ppk文件
我们在服务端重启sshd服务:

/ect.rc.d/init.d/sshd restart

至此,我们就大功告成了。

如果你在服务器已经生成了公钥和密钥,那么你可以本地同过puttygen的Generate按钮生成密钥,然后将内容复制到服务器的~/.ssh/authorized_keys中,修改器权限,然后修改配置文件即可使用密钥

评论

0条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注