SSH远程连接协议

SSH远程连接协议SSH SecureShell 是一种安全通道协议 主要用来实现字符界面的远程登录 远程复制等功能

大家好,欢迎来到IT知识分享网。

1.SSH基础

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

SSH客户端<————–网络—————->SSH服务端

优点:

  • 数据传输是加密的,可以防止信息泄漏
  • 数据传输是压缩的,可以提高传输速度

ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)

作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。 相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输,SSH 是加密传输。

ssh原理

公钥传输原理

  • 客户端发起链接请求
  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
  • 客户端生成密钥对
  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
  • 客户端发送加密值到服务端,服务端用私钥解密,得到Res
  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

ssh加密通讯原理

(1)对称加密

1、概念 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用

2、常用算法 在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

3、特点 1、加密方和解密方使用同一个密钥; 2、加密解密的速度比较快,适合数据比较长时的使用; 3、密钥传输的过程不安全,且容易被激活成功教程,密钥管理也比较麻烦;

4、优缺点 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担

(2)非对称加密

1、概念 非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

2、常用算法

  • RSA(RSA algorithm):目前使用最广泛的算法
  • DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
  • ECC(Elliptic curve cryptography,椭圆曲线加密算法)
  • ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障

3、原理 首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下

命令格式

登录

当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh   IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。

服务端配置

常用配置项

[root@ky15-1 ~]# vim /etc/ssh/sshd_config 17 Port    22   #生产建议修改 ListenAddress ip #监听地址设置SSHD服务器绑定的IP 地址,0.0.0.0 表示侦听所有地址安全建议:如果主机不需要从公网ssh访问,可以把监听地址改为内网地址 这个值可以写成本地IP地址,也可以写成所有地址,即0.0.0.0 表示所有IP。 LoginGraceTime 2m #用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为秒 PermitRootLogin yes #默认 ubuntu不允许root远程ssh登录 StrictModes yes   #检查.ssh/文件的所有者,权限等 MaxAuthTries #用来设置最大失败尝试登陆次数为6 MaxSessions  10         #同一个连接最大会话 PubkeyAuthentication yes     #基于key验证 PermitEmptyPasswords no       #密码验证当然是需要的!所以这里写 yes,也可以设置为 no,在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆。 PasswordAuthentication yes   #基于用户名和密码连接 GatewayPorts no ClientAliveInterval 10 #单位:秒 ClientAliveCountMax 3 #默认3 UseDNS yes #提高速度可改为no 内网改为no 禁用反向解析 GSSAPIAuthentication yes #提高速度可改为no MaxStartups    #未认证连接最大值,默认值10 Banner /path/file #以下可以限制可登录用户的办法:白名单 黑名单 AllowUsers user1 user2 user3@ip(限制主机) DenyUsers user1 user2 user3 AllowGroups g1 g2 DenyGroups g1 g2

ssh客户端

scp命令 —— 远程安全复制

sftp命令 —— 安全FTP上下载

格式:sftp user@ip

sftp root@172.16.88.4 #登陆到服务器 get下载 get anaconda-ks.cfg /home/ 上传 put abc.txt #默认时会上传的/root put abc.txt /home/ 查看可用命令 help #查看sftp可使用的命令和用途 打印服务器当前位置 pwd #打印当前服务器所在位置 lpwd #打印当前本地位置 切换目录、查看文件 cd #切换服务器上的目录 ls #查看当前目录下文件列表 下载文件、退出sftp get #下载文件 get -r #下载目录 quit #退出sftp put #上传文件 put -r #上传文件夹 退出命令:quit、exit、bye都可以

sftp用户权限设置

  对于服务器文件上传, 我们会创建sftp用户登陆服务器,禁止ssh登陆服务器;这样是为了安全性的考虑,避免外部访问服务器的其他路径,对其他路径上的文件进行访问、修改等。

  现在对外提供test用户,sftp访问服务器;创建过程如下:

1. 建立sftp用户 test 

    useradd test, 此时会在创建sftp用户目录/home/test

2.创建上传目录file,赋予权限

  cd /home/test

    mkdir file

 chown -R test:test /home/test/file

rsync

rsync -auv –delete /data/test 10.0.0.7:/data

免密登录

使用秘钥对及免交互验证登录

客户端如果想免密登录,进行两步操作即可:

  1. 第一步:生成密钥
  2. 第二步:传密钥给对方

1.客户端使用命令 ssh-keygen 生成密钥(默认使用rsa算法)

[root@localhost ~]# ssh-keygen //生成密钥 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:aA9uuLdOnvTs1DuT3lDcrveeU9bT1OAyZDXp3ABgbpg main The key's randomart image is: +---[RSA 2048]----+ | o..oo. | | = o +. | | E oo + +.| | . . .o.+ +| | + S oo..o| | + o . . . .=| | . = o o. ..o| | *.= ++ ....| | .o=o+.ooo. ++| +----[SHA256]-----+ 

2.使用命令 ssh-copy-id -i 自己密钥文件 对方地址 将客户端的公钥文件拷贝到服务端

[root@localhost ~]# cd /root/.ssh [root@localhost .ssh]# ls // 家目录 ~/.ssh/ 下会生成两个密钥文件,一个公钥一个私钥,.pub结尾的是公钥 id_rsa id_rsa.pub known_hosts [root@localhost .ssh]# ssh-copy-id -i id_rsa.pub 172.16.235.100 //将密钥拷贝到服务端(注意端口号) /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@172.16.235.100's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '172.16.88.4'" and check to make sure that only the key(s) you wanted were added. 

3.测试远程连接服务端时,是否免密码。

[root@localhost .ssh]# ssh 172.16.88.4 //远程登录到服务端 Last login: Mon Apr 29 22:29:53 2024 from 172.16.235.1 [root@node2 ~]# //免密登录 

同网段主机免密登录脚本

生产环境中,多台主机间想要免密登录,可以共用密钥。

[root@localhost ~]# cd /data [root@localhost data]# vim ssh_log.sh //编写免密登录脚本 #!/bin/bash PASS= //密码自行修改 #设置网段最后的地址,4-255之间,越小扫描越快 END=254 IP=`ip a s ens33 | awk -F'[ /]+' 'NR==3{print $3}'` NET=${IP%.*}. rm -f /root/.ssh/id_rsa [ -e ./SCANIP.log ] && rm -f SCANIP.log for((i=3;i<="$END";i++));do ping -c 1 -w 1 ${NET}$i &> /dev/null && echo "${NET}$i" >> SCANIP.log & done wait ssh-keygen -P "" -f /root/.ssh/id_rsa rpm -q sshpass || yum -y install sshpass sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IP AliveIP=(`cat SCANIP.log`) for n in ${AliveIP[*]};do sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}: done 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/119042.html

(0)
上一篇 2025-11-08 13:45
下一篇 2025-11-08 14:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信