一、ssh命令
登录类型
密码登录: 服务器发送公钥给客户端,客户端使用公钥加密后回传给服务器,服务器解密验证密码。
公钥登录: 服务器发送一个随机字符串给客户端,客户端用私钥加密,服务器用公钥解密(rsa作为签名使用)
ssh命令相关参数
-A 密钥转发 这个参数在使用跳板机等场景非常有用,如果发现始终连不上需要检查下这个
-i 指定密钥文件
-p 端口号
-C:请求压缩所有数据;
-f 后台运行
-N 参数: 不要求分配shell,有些场景下ssh禁止账号请求shell终端,比如这个账号只是作为转发
-g 默认这个LocalPort端口只允许本机连接,可以通过这个参数允许别的机器连接这个端口
-T :不要求分配终端
-o ServerAliveInterval=60 隔段时间发送保活消息
-q 抑制一些调试性的额外输出
-v 显示详细的调试信息,如果ssh连不上可以使用这个参数看看哪一步出问题了
相关的命令
ssh-keygen 用于生成密钥对
ssh-copy-id 用于复制公钥到服务器
复制公钥也可以使用:ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
1
相关的文件
~/.ssh/authorized_keys 用于保存用户的公钥文件
~/.ssh/known_hosts文件 保存的服务器用于辨别服务器的唯一散列码
~/.ssh/id_dsa 用户的私钥文件
~/.ssh/id_rsa.pub 默认生成的用户的公钥文件,用于将该公钥追加到需要登录的服务器authorized_keys文件
/etc/ssh/ssh_config 客户端ssh配置
/etc/ssh/sshd_config 服务端ssh配置
二、scp 命令
例子:scp test.txt chen@centos:/home/chen/data/
-P 指明端口
-r 递归复制
-i 指明密钥文件
三、rsync命令
rsync命令和scp类似,主要是采用’rsync’算法只同步不同的文件,支持压缩传输和断点续传,一般情况下速度更快。参数如下:
-t 不更新modify time
-z 压缩
-P 断点续传功能,大文件用到
-r 递归传递
-I 强制同步
-a 归档模式并保持所有文件属性, 等价于-rlptgoD (no -H,-A,-X)
-v 输出传输详情
-u 如果接受者上的文件比传输者的新旧不同步
指定端口,如1280端口: rsync -ravuz -e ‘ssh -p 1280’ 192.168.10.10:/home/chenfangzhi/ .
另外rsync还有一种服务器模式,采用rsync服务端和客户端的模型,需要长期同步文件,推荐使用这种模式,这种模式的账号和linux系统账号是分开的,更加安全。
四、 ssh-agent
最后说的这个东西是非常有用的,如果经常使用的ssh的肯定会遇到需要用多个私钥的场景和私钥被加密的场景。如果私钥被加密,每次连接还是需要输入密码,
当在各个服务器之间穿可能需要多次id_rsa密码,很是繁琐,另外多个多个主机采用不同的私钥的时候需要指定私钥,ssh-agent就是用来解决这个问题的。
这个功能需要在sshd配置文件中配置AllowAgentForwarding,ssh配置文件中配置ForwardAgent
eval ssh-agent -s :开启agent,这里必须使用eval
ssh-add id_rsa_file:用来添加密钥,这里如果不指定文件则添加的是~/.ssh/id_rsa文件