Linux远程控制服务sshd和scp

1 了解sshd服务

  SSH(Secure Shell)是一种能够提供安全远程登陆会话的协议,假如希望在远程Linux系统中执行命令,就是通过这个协议啦!
为什么要强调SSH协议是安全的呢?因为比如ftp、telnet等服务在网络上不会对口令或数据进行加密,那么骇客们真的非常容易就可以截获这些信息(尤其是同局域网内的用户),因此它们在本质是就是不安全的。
sshd服务提供两种安全验证的方法
1. 基于口令的安全验证:经过验证帐号与密码即可登陆到远程主机。
1. 基于密钥的安全验证:需要在本地生成”密钥对“后将公钥传送至服务端,进行公共密钥的比较。
sshd服务的配置文件解析:
sshd服务的配置文件解析:

[root@hd1 ~]# cat /etc/ssh/sshd_config
参数作用
Port 22默认的sshd服务端口。
ListenAddress 0.0.0.0设定sshd服务端监听的IP地址。
Protocol 2SSH协议的版本号。
HostKey /etc/ssh/ssh_host_keySSH协议版本为1时,私钥存放的位置。
HostKey /etc/ssh/ssh_host_rsa_keySSH协议版本为2时,RSA私钥存放的位置。
HostKey /etc/ssh/ssh_host_dsa_keySSH协议版本为2时,DSA私钥存放的位置。
PermitRootLogin yes设定是否允许root用户直接登录。
StrictModes yes当远程用户私钥改变时则直接拒绝连接。
MaxAuthTries 6最大密码尝试次数
MaxSessions 10最大终端数
PasswordAuthentication yes是否允许密码验证
PermitEmptyPasswords no是否允许空密码登陆(很不安全)

若您想要修改服务的配置参数,请一定要记得删除参数前面的注释符”#“并重启服务才生效的。

[root@hd1 ssh]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

在远程主机上启动sshd服务并加入到开机启动项:
[root@localhost ~]# systemctl start sshd
[root@localhost ~]# systemctl enable sshd

2 使用ssh命令登录主机

ssh命令用于远程管理Linux主机,格式为:“ssh [参数] 主机”。

参数作用
-p指定连接端口(默认为22)
-v显示连接过程的详细信息
[root@localhost ~]# ssh 192.168.10.20
The authenticity of host '192.168.10.20 (192.168.10.20)' can't be established.
ECDSA key fingerprint is 4f:a7:91:9e:8d:6f:b9:48:02:32:61:95:48:ed:1e:3f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.20' (ECDSA) to the list of known hosts.
root@192.168.10.20's password:此处输入远程主机root用户的密码
Last login: Wed Apr 15 15:54:21 2015 from 192.168.10.10
[root@localhost ~]#

3 安全密钥验证

使用密码验证终归会存在着被骇客暴力破解或嗅探监听的危险,其实也可以让ssh服务基于密钥进行安全验证(可无需密码验证)。

3.1 第一步:使用Xshell生成密钥(在本地主机中生成“密钥对”亦可)

  1. 我们打开熟悉的XSHELL软件,然后在工具-新建用户密钥生成向导
  2. 生成密钥参数:确定公钥的类型和长度;
    image
    我们这里需要选择RSA密钥类型,以及密钥长度可以选择1024或者我这里选择2048.然后点击下一步按钮。

  3. 生成公钥对:生成公钥和私钥对
    image
    继续下一步,我们需要给我们设置的私钥加密。

  4. 私钥加密:输入密码,只有该密码才能得到私钥(很重要)。
    image

  5. 公钥格式:
    image
    公钥格式选择SSH2-OPENSSH,保存公钥为文件后完成。

3.2 第二步:上传公钥至服务器中

将我们生成的id_rsa_2048.pub公钥文件上传到/root/.ssh文件夹下面(如果没有我们需要创建),然后我们需要将id_rsa_2048.pub重命名为authorized_keys 并且用chmod 600 authorized_keys设置权限。

3.3 第三步 :修改sshd配置文件

  1. 编辑ssh服务程序主配置文件

    [root@hd1 ~]# vim /etc/ssh/sshd_config
  2. 将允许密码验证的参数设置为no
    image
  3. 将允许密钥验证的参数设置为yes
    image
  4. 保存并退出配置文件

  5. 重启ssh服务

    Debian/Ubuntu执行:/etc/init.d/ssh restart
    CentOS执行:/etc/init.d/sshd restart或者service sshd restart

3.4 第四步 :配置Xshell使用密钥登陆

  1. 在Xshell新建一个链接;
  2. 设置用户身份为Public Key,选择用户密钥;
  3. 输入我们之前设置的密钥密码,这个时候我们其实就可以登陆。

4 禁用root登录

为了防止root用户被扫描,被暴力破解,可以禁止root用户登录,指定特定用户可以通过su - 的方式切换root身份。

4.1 禁用root登录

  1. 修改配置文件

    vi /etc/ssh/sshd_config

    修改PermitRootLogin为no

    PermitRootLogin no
  2. 重启sshd服务

    service sshd restart

4.2 限制用户切换root身份

我们指定某个用户可以切换root身份,其他用户不可以
1. 修改/etc/pam.d/su配置

[root@h1 ~]# vi /etc/pam.d/su

找到下面这行,去掉行首的“#”

#auth required pam_wheel.so use_uid

1. 将指定用户添加到wheel用户组

```
usermod -G wheel 某用户名
```

1. 修改登录文件

```
[root@h1 ~]# vi /etc/login.defs
```
在末尾添加:

```
SU_WHEEL_ONLY yes
```

5 远程传输命令

  要想将一些文件通过网络传送给其他主机,又恰好两台主机都是Linux系统,我们便可以直接用scp命令传输文件到另外一台主机。scp命令用于在网络中安全的传输文件。

5.1 发送文件

格式为:“==scp [参数] 本地文件 远程帐户@远程IP地址:远程目录==”。

参数作用
-v显示详细的连接进度
-P指定远程主机的sshd端口号
-r传送文件夹时请加此参数
-6使用ipv6协议

例如:将本地文件/root/out.txt传送到远程主机的/home目录:

[root@linuxprobe ~]# scp /root/out.txt 192.168.10.20:/home
root@192.168.10.20's password:此处输入远程主机中root用户的密码
out.txt 100% 0 0.0KB/s 00:00
传送文件夹并指定远程用户:
[root@linuxprobe ~]# scp -r results/ linuxprobe@192.168.10.20:/home
linuxprobe@192.168.10.20's password:此处输入远程主机中linuxprobe用户的密码

5.2 下载文件

强大的scp命令还可以将远程主机的文件下载到本地。
格式为:“==scp [参数] 远程用户@远程IP地址:远程文件 本地目录==”。
例如:将远程主机的/etc/issue.net文件下载到本地的/root目录:

[root@linuxprobe ~]# scp linuxprobe@192.168.10.20:/etc/issue.net /root
linuxprobe@192.168.10.20's password:
issue.net 100% 22 0.0KB/s 00:00

例如:将远程主机的/root/test文件夹下载到本地的/root目录:

[root@njupt ~]# scp -r root@192.168.10.20:/root/test /root
Password: 
1.txt                                                                                                             100%    0     0.0KB/s   00:00    
2.txt                                                                                                             100%    0     0.0KB/s   00:00    
1.txt                                                                                                             100%    0     0.0KB/s   00:00  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值