ssh 为Secure SHell 的缩写。OpenSSH: ssh协议的开源实现。
SSH协议版本
v1: 基于CRC-32做MAC,不安全;man-in-middle
v2:双方主机协议选择安全的MAC方式
基于DH算法做密钥交换,基于RSA或DSA实现身份认证
OpenSSH实现的客户端,服务端
C/S架构
C: ssh, scp, sftp
Windows客户端:
xshell, putty, securecrt, sshsecureshellclient
S: sshd
ssh客户端
客户端组件:
ssh, 配置文件:/etc/ssh/ssh_config
Host PATTERN
StrictHostKeyChecking no 首次登录不显示检查提示
命令登录格式:ssh [[email protected]]host [COMMAND]
-p port:远程服务器监听的端口
-b:指定连接的源IP
-v:调试模式
-C:压缩方式
-X: 支持x11转发
-Y:支持信任x11转发
ForwardX11Trusted yes
-t: 强制伪tty分配
ssh -t remoteserver1 ssh remoteserver24040
允许实现对远程系统经验证地加密安全访问
当用户远程连接ssh服务器时,会复制ssh服务器
/etc/ssh/ssh_host*key.pub(centos7.0默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的~./ssh/know_hosts中。下次连接时,会比较两处是否有不同。
基于key认证
(1) 在客户端生成密钥对
ssh-keygen -t rsa [-P ‘‘] [-f “/root/.ssh/id_rsa"]
#ssh-keygen –t rsa –P ‘’ -f “/root/.ssh/id_rsa”
(2) 把公钥文件传输至远程服务器对应用户的家目录
ssh-copy-id [-i [identity_file]] [[email protected]]host
相当于将公钥内容追加在远程服务器~/.ssh/authorized_keys 文件中,若无则创建,且权限为600
(3) 测试
(4) 转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化格式),并复制到需登录主机上相应文件authorized_keys中,注意权限必须为600
ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys
(5)重设私钥口令:#ssh-keygen –p
基于key认证
验证代理(authentication agent)保密解密后的密钥
? 这样口令就只需要输入一次
? 在GNOME中,代理被自动提供
? 否则运行ssh-agent bash
关掉代理:ssh-agent -k
钥匙通过命令添加给代理
ssh-add #添加密语 ,默认文件为/root/.ssh/id_rsa 等标准文件名格式密钥
ssh-add -L #查看以代理的私钥对应的公钥 文件
ssh-add -d #删除以添加的密语