Linux系统使用SSH服务和SCP命令

 目录

SSH安全协议介绍

使用sshd服务程序实践操作

一、使用ssh服务远程登录

二、禁止以root身份登录

三、使用安全密钥免密登录

scp远程传输命令

使用scp命令实操


SSH安全协议介绍

安全外壳协议SSH是Secure Shell的缩写,默认端口是22号端口,SSH由IETF的网络小组(Network Working Group)所制定;SSH是建立在应用层的安全协议。SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来迅速扩展到其他操作平台。SSH在正确使用时可以弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台都可以运行SSH。

SSH是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。在此之前,一般使用FTP或Telnet来进行远程登陆。但是因为FTP和Telnet都是以明文的形式在网络中传输账户密码和数据信息,所以很不安全,很容易受到黑客发起的攻击。

SSH有两个版本,SSH1和SSH2,在经过更新之后的SSH2更加安全,它提供更好的保护,防止攻击者和窃听者,支持更强大的加密算法,并对SSH协议进行了大量常规改进。

想要使用SSH协议来远程管理Linux系统,就需要配置sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,使用起来方便快捷,且能提供两种安全的验证方法:

基于口令的验证 —— 用账户和密码来验证登陆。

基于密钥的验证 —— 需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并于服务器中的公钥比较。(免密登录)

以上两种方法中,基于密钥验证的方式安全性更高,因为基于密钥验证方式使用了非对称加密技术(一般用RSA加密算法)安全性非常可靠,登陆过程中需要使用密钥对,大概流程是:

1.主机A需要登录到主机B,A先在本机生成一个密钥对,然后手动将公钥发送给B。

2.当有主机(A)向B发送登录请求时,B收到请求但B不知道是谁想登录,它就会随机生成一串字符用A的公钥进行加密发给想登录的主机。

3.A收到B发来的字符,用自己的私钥解密,再发送给B。

4.B收到并且核对确认无误后就知道是A想登录,就会通过登录请求,即登录成功。

图示:

使用sshd服务程序实践操作

下面用两台虚拟机来进行实验操作,虚拟机均为Linux-RHEL7系统

ssh命令格式为:ssh [参数] 用户@主机IP地址
常用参数:
-p        指定远程主机端口
-V        显示版本
-C        压缩所有数据
-4        只使用IPv4地址
-6        只使用IPv6地址

虚拟机1:命名为server,IP:192.168.1.1/24

虚拟机2:命名为client,IP:192.168.1.2/24

首先保证两台机子能互相ping通

一、使用ssh服务远程登录

在RHEL7系统中,sshd服务程序是默认安装开启和通过的

在client上操作:

此时已经使用ssh登录成功

二、禁止以root身份登录

管理员身份的权限是最大的,如果使用root身份登陆会对主机很不安全,所以可以通过修改配置文件来禁止以root身份登录

在虚拟机server中,进入主配置文件”/etc/ssh/sshd_config“,在命令模式下输入"set nu"显示行号,然后按i进入插入模式,找到第38行把#PermitRootLogin yes参数前的#去掉并把yes改成no,这样server就禁止以root远程登陆了

vim /etc/ssh/sshd_config //进入主配置文件

保存退出后重启服务程序

systemctl restart sshd  //重启sshd服务程序

然后在client上以root身份登录server进行测试:

 server已经拒绝以root身份登录

三、使用安全密钥免密登录

ssh-keygen是SSH服务下的生成,管理,转换认证密钥的命令工具,有两种密钥类型:rsa和dsa
ssh-keygen常用参数:
-t        指定生成密钥类型(默认rsa)
-f        指定生成密钥的文件名(默认id_rsa(私钥)、id_rsa.pub(公钥))
-P        提供旧密码
-N        提供新密码
-b        指定密钥长度(默认2048位)

1.先在server上创建一个用来登录的用户“bob”,密码:123456

 2.在client上生成一个密钥对

 然后可以查看一下已经生成的公钥和私钥:

3.将client上生成的公钥文件发送至server

4.修改server的配置文件,使其拒绝口令验证登录的方式,只允许密钥验证登录

进入配置文件后,找到第65行将“PasswordAuthentication yes”改为“PasswordAuthentication no”,保存退出后重启服务

sshd服务程序配置文件常用参数及作用
参数作用
PermitEmptyPasswords no   是否允许空密码登录
PasswordAuthentication yes是否允许密码验证
PermitRootLogin yes是否允许root身份直接登录
Protocol 2SSH协议版本号
Port 22默认的sshd服务端口
MaxAuthTries 6最大密码尝试次数
MaxSessions 10最大终端数
StrictModes yes当远程用户的私钥改变时,直接拒绝链接
ListenAddress 0.0.0.0设定sshd服务器监听的IP地址
HostKey /etc/ssh/ssh_host_keySSH协议版本为1时,des私钥存放位置
HostKey /etc/ssh/ssh_host_rsa_keySSH协议版本为2时,rsa私钥存放位置

HostKey

/etc/ssh/ssh_host_dsa_key

SSH协议版本为2时,dsa私钥存放位置
vim /etc/ssh/sshd_config //进入主配置文件

 

systemctl restart sshd  //重启sshd服务程序

5.修改完成后可以进行登录测试

 可以看到无需密码直接登录到server上了,可以查看IP地址和从client传送来的公钥文件,公钥存放位置在/home/bob/.ssh/authorized_keys

scp远程传输命令

scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令。且scp不仅能通过网络传送数据,而且所有的数据都将进行加密处理。如果想把文件通过网络从一台主机传递到其他主机,这两台主机都是Linux系统的话,此时使用scp命令就可以轻松的完成文件传递。

在使用scp命令把文件复制到远程主机时,首先要以绝对路径的形式写清本地文件的存放位置。如果要传送整个文件夹内的所有数据,还需要额外添加参数-r进行递归操作,然后加上要传送到的远程主机的IP地址,远程服务器便会要求进行身份验证,可以使用“用户名@主机地址”的参数格式。最后需要在远程主机的IP地址后面添加“:”号,并在后面写上要传送到远程主机的哪个文件夹中。只要参数正确并且成功验证了用户身份,就可以开始传送工作。除了远程发送文件,scp还可以从远程主机下载文件到本机。

scp命令格式为:

发送:scp [参数] 本地文件 远程账户@远程IP地址:远程目录
下载:scp [参数] 远程用户@远程IP地址:远程文件 本地目录
常用参数:
-v        显示详细的连接进度
-P        指定远程主机的sshd端口号
-r        用于传送文件夹
-6        使用IPv6协议

使用scp命令实操

发送文件:

先在client创建一个文件,再将文件发送到远程主机server上的bob用户

 从server上查看

 下载文件:

先在server上创建一个文件

 再从client上下载

这里因为client和bob用户已经通过密钥验证,所以不需要密码,如果是需要发送给server上root用户或者别的用户,就要进入配置文件将65行的no改为yes,即允许口令验证,否则就发送不了,系统会提示没有权限。 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值