Centos服务器ssh登录设置密钥对登录


linux配置ssh密钥服务:

[root@localhost ~]# vim /etc/ssh/sshd_config

PasswordAuthentication yes    //启用密码验证(改为no关闭密码登录)

AuthorizedKeysFile      .ssh/authorized_keys   //指定公钥库文件(公钥文本 cat /root/.ssh/id_rsa_1024.pub >>.ssh/authorized_keys )

PubkeyAuthentication yes   //启用密钥对验证 (#去不去没关系,默认是开的)

:wq 保存文件
[root@localhost ~]# service sshd restart


拷贝密钥文件:

cat /root/.ssh/id_rsa_1024.pub > .ssh/authorized_keys

用xshell客户端测试连接一下 pw@wuma2**1     pw@ka**2**1

touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

 (注意: 必须将~/.ssh/authorized_keys的权限改为600, 该文件用于保存ssh客户端生成的公钥,可以修改服务器的ssh服务端配置文件/etc/ssh/sshd_config来换文件名,默认是叫authorized_keys)


代码如下:

cat id_rsa.pub > authorized_keys

#(将id_rsa.pub的内容替换到 authorized_keys 中, 也可以把多个证书用 >>  追加到这个文件下,只支持多个密钥对登录)


 

如果网络上的非秘钥对登录的服务器很容易受到攻击,最惨的就是被人登录并拿到root权限。有几个简单的防御措施:

1. 修改ssh服务的默认端口。
ssh服务的默认端口是22,一般的恶意用户也往往扫描或尝试连接22端口。所以第一步就是修改这个默认端口
打开/etc/ssh/sshd_config,找到
Port 22
然后将22修改为其它没有被占用的端口,如1022。最好在1-1024之间,防止与用户进程端口冲突。
然后重启sshd即可
sudo /etc/init.d/ssh restart

2. 限制IP
首先修改/etc/hosts.allow文件,将可访问服务器ssh服务的客户IP加入其中,格式如下
sshd:192.168.1.0/255.255.255.0
sshd: 202.114.23.45
sshd: 211.67.67.89
然后修改/etc/hosts.deny文件,加入禁用其它客户连接ssh服务
sshd: ALL

3.升级服务器
矛与盾的故事永远没有结局,经常升级服务器是必备的
apt-get update
apt-get dist-upgrade



4.检查登录日志
不怕一万,就怕万一,没有攻不破的城堡,有些小偷可能是小白,或者来也匆匆,去也匆匆,在服务器上做完坏事没有擦除痕迹,所以经常检查登录日志,也是一种安全手段

more /var/log/secure | grep 103.63.109.74   #安全日志
who /var/log/wtmp  #登录日志
utmpdump /var/log/btmp  | grep 103.63.109.74   #失败日志
 

最后一直使用了who /var/log/wtmp语句 ,才得到了我想要的数据,如下:

因为我这里只是做简单的演示,就直接使用root账号进行登录了。

    root@MRtancp:~# who /var/log/wtmp
    root     tty1         2018-10-07 13:00
    root     pts/0        2018-10-29 17:12 (117.136.32.98)
    root     pts/1        2018-10-29 17:16 (117.136.32.98)
    root     pts/2        2018-10-29 17:16 (117.136.32.98)
    root     pts/3        2018-10-29 17:17 (117.136.32.98)
    root     pts/4        2018-10-29 17:17 (117.136.32.98)
    root     pts/5        2018-10-29 17:17 (117.136.32.98)
    root     pts/6        2018-10-29 17:17 (117.136.32.98)
    root     pts/7        2018-10-29 17:17 (117.136.32.98)
    root     pts/8        2018-10-29 17:21 (117.136.32.98)
    root     pts/9        2018-10-29 17:21 (117.136.32.98)
    root     pts/10       2018-10-29 17:21 (117.136.32.98)
    root     pts/11       2018-10-29 17:21 (117.136.32.98)
    root     pts/12       2018-10-29 17:22 (117.136.32.98)
    root     pts/13       2018-10-29 17:27 (117.136.32.98)
    root@MRtancp:~#

以上是我使用本地的ssh远程登录的阿里云服务器获得记录的通,因为重复关掉重新连接了很多次,貌似确实能够记录了,每次的登录服务器的ssh名字,登录的时间和对应的终端的ip。

那接下来简单的介绍下ttyX  ,和ptsX的意思了:

tty[1-6]就是你用ctr+alt+f[1-6]所看到的那个终端; 即虚拟控制台。另外tty7是表示图形界面,就是我们当前登录的是GNOME,当然就是图形界面了,而服务器上就只有命令行界面了。

(另外 :tty1-tty6表示文字界面,可以用Ctrl+Alt+F1-F6切换,+F7就是切换回图形界面。)

下面两行说明我当前打开了两个终端窗口,所以就有pts/0和pts/1其他的是外部终端和网络终端。

pts/*为伪(虚拟)终端, 其中pts/0,1,2...在桌面Linux中是标准输入,标准输出,标准出错。

另外我们也能简单的看一下这个账号登录干了些什么?
root账户下输入su - username
切换到username下输入
history
能看到这个用户历史命令,默认最近的1000条

猜你喜欢

转载自blog.csdn.net/happyzhlb/article/details/119937783