关于Linux 系统SSH协议远程管理

SSH远程管理

1. SSH协议

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

2. SSH工作原理

ssh在linux上有个服务端(sshd),一般是默认开启的,监听22端口。我们只需要一个ssh客户端即可连接到远程服务器。用户通过ssh协议登录到远程服务器后即可对系统进程操作。

比如我们可以关掉服务端的sshd,客户端就不可以连接了。

service sshd stop

3. 作为ssh客户端使用ssh命令

3.1 ssh命令

指定用户登录服务器:

ssh -l root 192.168.0.109
ssh [email protected]

指定端口和用户登录服务器

ssh [email protected] -p 1234
3.2 scp命令

多台linux之间的文件复制常用的有几种方法,分别是:

  1. 使用ftp协议,一台机器装ftp服务端,另一台机器使用ftp客户端对他进行文件的传送,这种方法使用起来比较方便,且稳定,缺点就是需要配置ftp服务器和客户端,在传送文件数量较多较大的时候比较推荐。
  2. 使用samba服务,这种使用起来十分方便,但是需要配置samba服务,也有一定的局限性,早期使用较多,目前使用量在逐渐降低。
  3. 使用scp命令

scp命令的基本格式:

scp [选项] 文件位置 文件目标位置

常用参数:

    -v 显示进度
    -C 压缩传输选项,这个并不推荐使用,我们一般本地压缩后在传输
    -p 指定端口
    -4 强行使用 IPV4 地址
    -6 强行使用 IPV6 地址
    -r 遍历路径复制(一般用于目录的传播)
    -l 限制最大传输带宽,单位是Kb/s

从本地复制到远程 例子

scp ./sms.php [email protected]: /root/

上面的命令是将本地的当前目录下的sms.php,使用root账号传送到192.168.0.109主机的/root/目录下

scp -r ./sms [email protected]: /root/

上面的命令是将本地的当前目录下的sms目录及其内部的文件,使用root账号传送到192.168.0.109主机的/root/目录下

从远程复制到本地 例子

scp -r [email protected]: /root/sms ./22
scp [email protected]: /root/sms/mail.php ./33

4. SSH服务端sshd的配置

配置文件的位置:/etc/ssh/sshd_config

4.1 配置文件的中文注解
    Protocol 2  #只支持SSH2协议
    Port <端口号>  #修改默认端口号
    MaxStartups 5    #同时允许5个尚未登录的SSH联机
    MaxAuthTries 3   #最大登录尝试次数为3
    
    GSSAPIAuthentication no  #关闭GSSAPI认证
    ServerKeyBits 1024  #将ServerKey强度改为1024比特
    PermitEmptyPasswords no  #禁止空密码进行登录
    ChallengeResponseAuthentication no #禁用s/key密码
    UsePAM no  #不通过PAM验证
    PermitRootLogin no #禁止root远程登录
    PasswordAuthentication no  #不允许密码方式的登录
    RSAAuthentication no #不允许RSA认证,只针对SSH1
    PubkeyAuthentication yes #允许公钥认证
    AuthorizedKeysFile .ssh/authorized_keys #保存公钥的认证文件
    UsePrivilegeSeparation yes    #用户权限设置
    
    SyslogFacility AUTH    #记录SSH登录情况
    LogLevel INFO    #记录等级为INFO
    
    PrintMotd yes    #登录成功后显示/etc/motd 文件的内容
    PrintLastLog no    #不显示上次登录信息
    Compression yes  #是否压缩命令
    KeepAlive yes    #防止死连接
    StrictModes yes    #接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查
    UseDNS no  #不使用DNS反解
    
    AllowUsers <用户名>  #允许通过远程访问的用户,多个用户以空格分隔
    AllowGroups <组名>  #允许通过远程访问的组,多个组以空格分隔
    DenyUsers <用户名>  #禁止通过远程访问的用户,多个用户以空格分隔
    DenyGroups <组名>  #禁止通过远程访问的组,多个组以空格分隔

为了提高安全程度,一般情况下我们线上机器会禁止root账号远程登录,我们会创建一个权限很低的用户允许其可以远程登录,登录后在使用su命令切换到root账户即可。

或者有些情况下,我们使用密钥免密码登录,这个就更安全了,可以自行上网查一下资料试一下。

4.2 使用/etc/hosts.deny/etc/hosts.allow 进行访问控制

/etc/hosts.allow/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。

比如SSH服务,我们通常只对管理员开放,那我们就可以禁用不必要的IP,而只开放管理员可能使用到的IP段

如:vi /etc/hosts.allow,然后写入如下内容:

sshd:192.168.0.*

上面表示允许192.168.0.* IP段的使用ssh连接访问服务器

vi /etc/hosts.deny,然后写入如下内容:

sshd:192.168.0.109

上面表示禁止192.168.0.109 IP的用户使用ssh连接访问服务器

注:当/etc/hosts.deny/etc/hosts.allow里面的规则冲突时,以/etc/hosts.allow的规则为准

5. sftp命令

sftp 是一个交互式文件传输程序。它类似于ftp,但它进行加密传输,比FTP有更高的安全性。要想使用ftp,首先要传输的两端建立连接。

建立连接使用命令:

sftp 用户名@主机地址

sftp连接一旦建立,我们就可以使用sftp的命令进行文件的传输了,常用的命令有:

下载文件

get 远程文件地址 [本地文件地址]

如果“本地文件地址”不填写,表示传到当前目录

上传文件

put 本地文件地址 [远程文件地址]

如果“远程文件地址”不填写,表示传到远程的当前目录

其他常用命令还有:lsllspwdlpwdexitquithelp等等

6. 常用ssh客户端工具介绍

UNIX和Linux下直接使用终端就可以作为ssh客户端

Windows下常用的客户端软件有:putty、xshell、secureCRT

sftp客户端:

unix和linux下有:filezilla等

windows下有:filezilla、xftp等

发布了22 篇原创文章 · 获赞 0 · 访问量 1141

猜你喜欢

转载自blog.csdn.net/bigpatten/article/details/103961440