zoukankan      html  css  js  c++  java
  • Linux服务之SSH

    SSHSecure Shell缩写,由IETF的网络小组所制定。SSH为建立在应用层基础上的安全协议。SSH是目前较可靠的,为远程登录会话和其他网络服务提供安全性的协议。

    使用格式:ssh USERNAME@HOSTNAME

    注意:其中USERNAME是服务端的用户名称,HOSTNAME是服务器的访问地址。

    1、修改默认端口

    我们会经常使用如下命令远程控制你的Linux系统:

    ssh USERNAME@HOSTNAME

    在此条命令中,系统会自动链接服务器的22端口,因为ssh的默认端口是22。如果我们修改默认端口,同样可以增强系统的安全性。首先修改配置文件:

    vim /etc/ssh/sshd_config

    搜索关键词Port,如果该设置项有注释请去掉,并将数字改为你想设置的值。重启服务:

    systemctl restart sshd

    修改端口之后,连接的命令为:

    ssh -p NEWPORT USERNAME@HOSTNAME

    2、禁止root的登录

    每一个Linux系统,都会有root用户,就像Windows系统都有Administrator一样。当黑客们去尝试破解你的服务器的密码时,他们肯定会尝试使用此用户名去登录,这样他们只需解决密码即可。那如果我们禁用了root用户而改用其它用户,那破解的难度就增加了。首先修改配置文件:

    vim /etc/ssh/sshd_config

    搜索关键词PermitRootLogin,如果该设置项有注释请去掉,并将阈值修改为no。重启服务:

    systemctl restart sshd

    3、使用证书登录

    上面的两种方式可以提升服务器的安全性,但也并不是绝对的,毕竟端口号的范围是1-65535,而用户名是明文的,所以很多企业都会使用证书验证形式。首先在客户端生成证书文件:

    ssh-keygen

    一路回车即可,生成的证书一般会保存在~/.ssh/id_rsa.pub,需要上传到服务器:

    scp ~/.ssh/id_rsa.pub USERNAME@HOSTNAME:~

    然后在服务器将该证书,导入到验证文件中:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

    之后客户端就可以用证书登录了:

    ssh -i ~/.ssh/id_rsa USERNAME@HOSTNAME

    4、保持持久连接

    一般服务器都会设置无响应超时断开时间,即长时间未收到客户端的数据后,会自动断开与客户端的连接。就像电脑长时间未操作,系统会自动进入到休眠一样。有时候我们需要长时间保持连接,可以执行下面命令:

    ssh -o ServerAliveInterval=60 USERNAME@HOSTNAME

    如果感觉每次输入太过麻烦,也可以修改配置文件/etc/ssh/ssh_config,添加以下内容即可:

    ServerAliveInterval 60

    5、修改默认端口注意事项

    很多服务器都会开启防火墙,在修改端口后,需要开放指定的端口号,使用iptables需执行下面命令:

    iptables -I INPUT -p tcp --dport NEWPORT -j ACCEPT

    NEWPORT为新端口号,如果是firewalld则需执行:

    firewall-cmd --zone=public --add-port=NEWPORT/tcp --permanent

    6、禁止root的登录注意事项

    禁止了root登录之后,务必添加一个可登录的用户:

    useradd USERNAME

    之后可使用该用户登录,登录后可以切换至root管理服务器:

    su -

    7、使用证书登录注意事项

    设置证书登录之后,就不再需要密码验证了,可以编辑配置文件禁用密码登录:

    vim /etc/ssh/sshd_config

    将里面的PasswordAuthentication改为no即可,记得重启服务生效:

    systemctl restart sshd

    8、使用SCP传文件

    SSH除了可控制系统,还可以通过该通道传输文件,只是命令不同,传文件的命令为SCP,用法如下:

    scp /PATH/FILENAME USERNAME@HOSTNAME:/PATH/FILENAME

    该命令也可以传输目录,命令如下:

    scp -r /PATH/DIRNAME USERNAME@HOSTNAME:/PATH/DIRNAME

  • 相关阅读:
    删除字符串前后的空格
    Python中定义“私有”成员变量和成员函数
    linux 线程
    进程虚拟内存模型
    守护进程
    FIFO
    linux 中的 wait 函数和 waitpid 函数
    孤儿进程和僵尸进程
    linux 中的 exec 函数族
    linux中的fork函数
  • 原文地址:https://www.cnblogs.com/renyz/p/11226846.html
Copyright © 2011-2022 走看看