ssh
ssh: secure shell, protocol, 22/tcp, 安全的远程登录
OpenSSH: ssh协议的开源实现
dropbear:另一个开源实现
SSH协议版本
- v1: 基于CRC-32做MAC,不安全;man-in-middle
- v2:双方主机协议选择安全的MAC方式
- 基于DH算法做密钥交换,基于RSA或DSA实现身份认证
两种方式的用户登录认证:
- 基于password
- 基于key
OpenSSH:
C/S
C: ssh, scp, sftp Windows客户端: xshell, putty, securecrt, sshsecureshellclient
S: sshd
客户端组件:
ssh, 配置文件:/etc/ssh/ssh_config
Host PATTERN
StrictHostKeyChecking no 首次登录不显示检查提示
格式:ssh [[email protected]]host [COMMAND]
ssh [-l user] host [COMMAND]
- -p port:远程服务器监听的端口(指明端口)
- -b:指定连接的源IP(两个及以上IP时要指明就用到这个选项)
- -v:调试模式(用来排错)
- -C:压缩方式
- -X: 支持x11转发(如果想用图形方式用)
- -Y:支持信任x11转发
- ForwardX11Trusted yes
- -t: 强制伪tty分配
ssh -t remoteserver1 ssh remoteserver2
(用来通过 1 去连接 2 不加 -t会报错)
注意:默认是以连接主机的用户名去连接!就是当前以root身份登录就会以root身份去连接那个ip的主机!第一次会有确认通知!!!
1.支持连接后执行一条命令并退回
改ssh的端口号
不过改了端口以前连接的用户不受影响!
改了端口如果想默认连接这个端口就要把客户端的配置文件改变!
允许实现对远程系统经验证地加密安全访问
当用户远程连接ssh服务器时,会复制ssh服务器
/etc/ssh/ssh_host*key.pub(centos7.0默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的 ~./ssh/know_hosts中。下次连接时,会比较两处是否有不同。
基于密钥的认证:
1 、在客户端生成密钥对
ssh-keygen -t rsa [-P ‘‘] [-f “/root/.ssh/id_rsa"]
#ssh-keygen –t rsa –P ‘‘ -f "/root/.ssh/id_rsa"
2、 把公钥文件传输至远程服务器对应用户的家目录(会自动生成 authorized_keys )
ssh-copy-id [-i [identity_file]] [[email protected]]host
authorized_keys此文件就是自动登录用到的文件
3、 测试
注意:生成的这两个ssh密钥对要保护好,如果被盗走就会让别的机器也能不用密码就连上了!!
4、 在SecureCRT,Xshell或实现基于key验证
在SecureCRT工具—>创建公钥—>生成Identity.pub文件转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化格式),并复制到需登录主机上相应文件 authorized_keys 中,注意权限必须为600,在需登录的ssh主机上执行:
ssh-keygen -i -f Identity.pub >> .ssh authorized_keys (SecureCRT 上要转换一下)
5、重设私钥口令:#ssh-keygen –p
6、验证代理(authentication agent)保密解密后的密钥
这样口令就只需要输入一次
在GNOME中,代理被自动提供(不需要执行这个 bash)
否则运行ssh-agent bash
7、钥匙通过命令添加给代理
ssh-add
然后再去连接就会把密码保存