Linux命令之ssh
ssh [-l login_name] hostname | user@hostname [command]
ssh [-afgknqstvxACNTX1246] [-b bind_address] [-c cipher_spec] [-e escape_char] [-i identity_file] [-l login_name] [-m mac_spec] [-o option] [-p port] [-F configfile] [-L port:host:hostport] [-R port:host:hostport] [-D port] hostname | user@hostname [command]
ssh(SSH客户端)用于登录远程主机,并且在远程主机上执行命令。它的目的是替换rlogin和rsh,同时在不安全的网络以及两个互不信任的主机之间,提供加密的、安全的通信连接。X11连接和任意TCP/IP端口均可以通过此安全通道转发(forward)。
当用户通过ssh连接并登录主机hostname后,根据使用协议,使用不用的方法像远程主机证明他/她的身份(详细请使用’man -a ssh’查看)。
(1).选项
-1 强制ssh只使用协议第一版 -2 强制ssh只使用协议第二版 -4 强制ssh只使用IPv4地址 -6 强制shh只使用IPv6地址 -a 禁止转发认证代理的连接 -A 允许转发认证代理的连接 代理转发需谨慎。默写用户能够在远程主机上绕过文件访问权限(由于代理的UNIX域socket(套接字)),他们可以通过转发的连接访问本地代理。攻击者不可能从代理获得密钥内容但是他们能够操作这些密钥,利用加载到代理上的身份信息通过认证。 -b bin_address 在用过多个接口或地址别名的机器上,指定收发接口 -c blowfish|3des|des 选择加密会话的密码术。3des是默认算法,3des(triple-des)用三支不同的密钥做加密-解密-加密三次运算,被认为比较可靠。blowfish是一种快速的分组加密术(block cipher),非常安全,而且速度笔3des快的多。des仅支持ssh客户端,目的是能够和老式的不支持3des的协议第一版互操作。由于其密码算法上的弱点,强烈建议避免使用。 -c cipher_spec 另外,对于协议第二版,这里可以指定一组用逗号隔开,按优先顺序排列的密码数,详见Ciphers -e ch|^ch|none 设置pty会话的escape字符(默认字符~)。escape字符只在行首有效,escape字符后面跟一个点(.)表示结束连接,跟一个control-Z表示挂起连接(suspend),跟escape字符自己表示输出这个字符。把这个字符设为none则禁止escape功能,使会话完全透明。 -f 要求ssh在执行命令前退至后台。它用于当ssh准备询问口令或密语,但是用户希望它在后台进行。该选项隐含了-n选项。在远端及其上启动X11程序的推荐手法就是类似于ssh –f host xterm的命令 -g 允许远端主机连接本地转发的端口 -i identity_file 指定一个RSA或DSA认证所需的身份(私钥)文件。默认文件是协议第一版的$HOME/.ssh/identity以及协议第二版的$HOME/.ssh/id_rsa和$HOME/.ssh/id_dsa文件。也可以在配置文件中对每个主机单独指定身份文件。可以同时使用多个-i选项(也可以在配置文件中指定多个身份文件) -I smartcard_device 指定智能卡(smartcard)设备。参数是设备文件,ssh能够用它和智能卡通信买智能卡里面存储了用户的RSA私钥。 -k 禁止转发Kerberos门票和AFS令牌。可以在配置文件中对每个主机单独设置这个参数。 -l login_name 指定登录远程主机的用户。可以在配置文件中对每个主机单独设置这个参数。 -m mac_spec 另外,对于协议第二版,这里可以指定一组逗号隔开,按优先顺序排列的MAC(消息验证码)算法(message authentication code)。详细以MACs为关键字查询。 -n 把stdin重定向到/dev/null(实际上防止从stdin读取数据)。ssh在后台运行时一定会用到这个选项。它的常用技巧是远程运行X11程序。例如,ssh -n shadows.cs.hut.fi emacs &将会在shadows.cs.hut.fi上启动emacs,同时自动在加密通道中转发X11连接。Ssh在后台运行。(但是如果ssh要求口令或密语,这种方式就无法工作;参见-f选项) -N 不执行远程命令。用于转发端口(限协议第二版) -o option 可以在这里给出默写选项,格式和配置文件中的格式一样。它用来设置那些没有命令行开关的选项。 -p port 指定远程主机的端口。可以在配置文件中对每个主机单独设定这个参数。 -q 安静模式。消除所有警告和诊断信息。 -s 请求远程系统激活一个子系统。子系统是SSH2协议的一个特性,能够协助其他应用程序(如sftp)把SSH用做安全通路。子系统通过远程命令指定。 -t 强制分配伪终端。可以在远程机器上执行任何全屏幕(screen-based)程序,所以非常有用,例如菜单服务。并联的-t选项强制分配终端,即使ssh没有本地终端。 -T 禁止分配伪终端 -v 冗详模式。使ssh打印关于运行情况的调试信息。在调试连接,认证和配置问题时非常有用。并联的-v选项能够增加冗详程度。最多为三个 -x 禁止X11转发。 -X 允许X11转发。可以在配置文件中对每个主机单独设置这个参数。 应该谨慎使用X11转发。如果用户在远程主机上能够绕过文件访问权限(根据用户的X授权数据库),他就可以通过转发的连接访问本地X11显示器。攻击者可以据此采取行动,如监视键盘输入等。 -C 要求进行数据压缩(包括stdin,stdout,stderr以及转发X11和TCP/IP连接的数据)。压缩算法和gzip(1)的一样,协议第一版中,压缩级别’level’用CompressionLevel选项控制。压缩技术在modem线路或其他慢速连接上很有用,但是在高速网络上反而可能降低速度。可以在配置文件中对每个主机单独设置这个参数。另见Compression选项。 -F configfile 指定一个用户级配置文件。如果在命令行上指定了配置文件,系统级配置文件(/etc/ssh/ssh_config)将被忽略。默认的用户级配置文件是$HOME/.ssh/config -L port:host:hostport 将本地机(客户机)的某个端口转发到远端指定机器的指定端口。工作原理是这样的,本地机器上分配了一个socket监听port端口,一旦这个端口上有了连接,该连接就经过安全通道转发出去,同时远程主机和host的hostport端口建立连接。可以在配置文件中指定端口的转发。只有root才能转发特权端口。IPv6地址用另一种格式说明:port/host/hostport -R port:host:hostport 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口。工作原理是这样的,远程主机上分配一个socket监听port端口,一旦这个端口上有了连接,该连接经过安全通道转向出去,同时本地主机和host的hostport端口建立连接。可以在配置文件中指定端口的转发。只有用root登录远程主机才能转发特权端口。IPv6地址使用另一种格式:port/host/hostport -D port 指定一个本地机器“动态的”应用程序端口转发。工作原理是这样的,本地机器上分配一个socket监听port端口,一旦这个端口上有了连接,该连接就经过安全通道转发出去,根据应用程序的协议可以判断出远程主机将和哪里连接。目前支持SOCKS4可以在配置文件中指定动态端口的转发
(2).配置文件
/etc/ssh/ssh_config
详细请使用’man -a ssh_config’查看帮助文档
(3).实例
用CentOS6.8连接CentOS7,或用CentOS7连接CentOS6.8。首先要做的都是开放22端口,CentOS6.8防火墙配置文件在/etc/sysconfig/iptables,而CentOS7配置文件在/etc/firewalld/zones/public.xml。然后重启防火墙服务,CentOS6.8使用service iptables restart,CentOS7使用systemctl restart firewalld。
首先展示CentOS7连接CentOS6.8
[xf@xuexi ~]$ ssh root@192.168.128.225 The authenticity of host '192.168.128.225 (192.168.128.225)' can't be established. RSA key fingerprint is SHA256:1ttWCoSQF5u6ZEARHacvCnJeCHK3dCIbQ2ru+lWyAY8. RSA key fingerprint is MD5:1e:32:88:36:4f:7e:0b:3d:8f:13:47:d4:a5:96:a9:4a. Are you sure you want to continue connecting (yes/no)? y Please type 'yes' or 'no': yes Warning: Permanently added '192.168.128.225' (RSA) to the list of known hosts. root@192.168.128.225's password: Last login: Mon Apr 9 13:47:49 2018 [root@CentOS6 ~]# ls anaconda-ks.cfg install.log.syslog 模板 图片 下载 桌面 install.log 公共的 视频 文档 音乐 [root@CentOS6 ~]# exit //退出远程 logout Connection to 192.168.128.224 closed. [root@xuexi xf]#
接着展示CentOS6.8连接CentOS7
[ root@CentOS6 桌面 ]# ssh 192.168.128.223 root@192.168.128.223’s password: Last login: Sat Sep 29 15:18:58 2018 [root@xuexi ~]# ls Anaconda-ks.cfg initial-setup-ks.cfg [root@xuexi ~]# exit //退出远程 登出 Connection to 192.168.128.223 closed. [ root@CentOS6 桌面 ]#
(4).添加或修改ssh默认端口