本文共 2592 字,大约阅读时间需要 8 分钟。
1、介绍 ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。
具体的软件实现: OpenSSH: ssh协议的开源实现,CentOS默认安装 dropbear:另一个开源实现 SSH协议版本 v1: 基于CRC-32做MAC,不安全;man-in-middle v2:双方主机协议选择安全的MAC方式 基于DH算法做密钥交换,基于RSA或DSA实现身份认证 两种方式的用户登录认证: 基于password 基于key 端口号:22 -------------------------------------------------------------------------------------ssh, 配置文件:/etc/ssh/ssh_config Host PATTERN StrictHostKeyChecking no 首次登录不显示检查提示 格式:ssh [user@]host [COMMAND] ssh [-l user] host [COMMAND] -p port:远程服务器监听的端口 -b:指定连接的源IP -v:调试模式 -C:压缩方式 -X: 支持x11转发 -Y:支持信任x11转发 -t: 强制伪tty分配 ssh -t remoteserver1 ssh remoteserver2
2、ssh服务登录验证 当用户远程连接ssh服务器时,会复制ssh服务器 /etc/ssh/ssh_host*key.pub(CentOS7默认是 ssh_host_ecdsa_key.pub)文件中的公钥到客户机的 ~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥 ,不能匹配,将拒绝连接
①基于用户和口令登录验证
1.客户端发起ssh请求,服务器会把自己的公钥发送给用户 2.用户会根据服务器发来的公钥对密码进行加密 3.加密后的信息回传给服务器,服务器用自己的私钥解密, 如果密码正确,则用户登录成功、
用的xshell连接的,之后会弹出询问密码的对话框。
②基于密钥的登录方式 :
1.首先在客户端生成一对密钥(ssh-keygen) 2.并将客户端的公钥ssh-copy-id 拷贝到服务端 3.当客户端再次发送一个连接请求,包括ip、用户名 4.服务端得到客户端的请求后,会到authorized_keys中 查找,如果有响应的IP和用户,就会随机生成一个字符串 ,例如:acdf 5.服务端将使用客户端拷贝过来的公钥进行加密,然后发 送给客户端 6.得到服务端发来的消息后,客户端会使用私钥进行解密 ,然后将解密后的字符串发送给服务端 7.服务端接受到客户端发来的字符串后,跟之前的字符串进 行对比,如果一致,就允许免密码登录
注:具体步骤写在最后啦
环境:用6通过密钥去连接7的HR
centos6.9 user:xs 172.18.253.118 centos7.4 user:HR 172.18.250.111 1、生成公钥
2、传送公钥
3、对比公钥并连接
通过这种方式连接以后就不用在输入密码口令了,使用scp命令同理
加密密钥方式连接,相当于下面步骤第5、6、7步骤
注:只要输入一次,以后就不用了,但退出了就要再来一次
基于密钥认证步骤 (1) 在客户端生成密钥对 ssh-keygen -t rsa [-P ''] [-f “~/.ssh/id_rsa"] -t 指定加密方式,-f指定加密文件 (2) 把公钥文件传输至远程服务器对应用户的家目录 ssh-copy-id [-i [identity_file]] [user@]host(3) 测试 (4) 在SecureCRT或Xshell实现基于key验证 在SecureCRT工具—>创建公钥—>生成Identity.pub文件 转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化 格式),并复制到需登录主机上相应文件authorized_keys中, 注意权限必须为600,在需登录的ssh主机上执行: ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys(5)重设私钥口令: ssh-keygen –p (6)验证代理(authentication agent)保密解密后的密钥 这样口令就只需要输入一次 在GNOME中,代理被自动提供给root用户 否则运行ssh-agent bash (7)钥匙通过命令添加给代理 ssh-add
优点:
加密 SSH Client 端至 SSH Server 端之间的通讯数据 突破防火墙的限制完成一些之前无法建立的 TCP 连接环境
centos7 :172.18.250.11centos6 B1:172.18.253.118centos6 B2:172.18.253.69要在centos7上 装上telnet包设置防火墙拒绝B2,安装完后启动:systemctl start telnet.socket
思维导图:7不允许B2直连(也就是它们ping不通),但允许B1连接。B2通过telnet封装在ssh连接B1,通过B1用telnet连接centos 7。顺便更正一下B2的地址是:172.18.253.69在后续图中可见。
B2链接之前
在B2上执行命令,输入中间人B1的口令 此时B1的信息 再来看下centos7的信息 连接成功的B2
转载于:https://blog.51cto.com/11566825/2106555