ssh命令
ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。
语法ssh(选项)(参数)选项 -1:强制使用ssh协议版本1; -2:强制使用ssh协议版本2; -4:强制使用IPv4地址; -6:强制使用IPv6地址;-p:指定远程服务器上的端口; -b:使用本机指定地址作为对应连接的源ip地址; -C:请求压缩所有数据 -f:后台执行ssh指令;-l:指定连接远程服务器登录用户名; -g:允许远程主机连接主机的转发端口;-F:指定ssh指令的配置文件; -i:指定身份文件; -N:不执行远程指令; -o:指定配置选项; -q:静默模式; -X:开启X11转发功能; -x:关闭X11转发功能; -y:开启信任X11转发功能。 -A:开启认证代理连接转发功能; -a:关闭认证代理连接转发功能;参数
远程主机:指定要连接的远程ssh服务器; 指令:要在远程ssh服务器上执行的指令。ssh使用
1、查看SSH客户端版本有的时候需要确认一下SSH客户端及其相应的版本号。使用ssh -V命令可以得到版本号。需要注意的是,Linux一般自带的是OpenSSH: 下面的例子即表明该系统正在使用OpenSSH:# ssh -VOpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 20132、连接到远程主机:
# hostname lianxi# ssh 192.168.120.135The authenticity of host '192.168.120.135 (192.168.120.135)' can't be established.ECDSA key fingerprint is a1:54:24:18:77:01:db:c7:8c:ac:de:8f:c4:81:01:7a.Are you sure you want to continue connecting (yes/no)? yes第一次连接目标主机时,ssh 会让你确认目标主机的真实性。如果你回答的是 NO,SSH 将不会继续连接,只有回答 Yes才会继续。Warning: Permanently added '192.168.120.135' (ECDSA) to the list of known hosts.root@192.168.120.135's password: Last failed login: Mon Apr 10 13:54:09 CST 2017 from :0 on :0There was 1 failed login attempt since the last successful login.Last login: Mon Apr 10 13:08:44 2017# hostname nisserver# exit登出Connection to 192.168.120.135 closed.# ssh root@192.168.120.120
root@192.168.120.120's password: Last login: Tue Apr 11 14:00:20 2017 from 192.168.120.120# hostnamelianxi# exit登出Connection to 192.168.120.120 closed.# hostnameshiyan# hostname
shiyan# ssh 192.168.120.120 -l rootroot@192.168.120.120's password: Last login: Tue Apr 11 14:02:34 2017 from 192.168.120.114# hostnamelianxi说明:以上两种方式都可以远程登录到远程主机,server代表远程主机,name为登录远程主机的用户名。
# hostname lianxi# ssh 192.168.120.135The authenticity of host '192.168.120.135 (192.168.120.135)' can't be established.ECDSA key fingerprint is a1:54:24:18:77:01:db:c7:8c:ac:de:8f:c4:81:01:7a.Are you sure you want to continue connecting (yes/no)? yes第一次连接目标主机时,ssh 会让你确认目标主机的真实性。如果你回答的是 NO,SSH 将不会继续连接,只有回答 Yes才会继续。Warning: Permanently added '192.168.120.135' (ECDSA) to the list of known hosts.root@192.168.120.135's password: Last failed login: Mon Apr 10 13:54:09 CST 2017 from :0 on :0There was 1 failed login attempt since the last successful login.Last login: Mon Apr 10 13:08:44 2017# hostname nisserver# exit登出Connection to 192.168.120.135 closed.3、连接到远程主机指定的端口:
# ssh root@192.168.120.120 -p 6222ssh 192.168.120.120 -l root -p 6222说明:p 参数指定端口号,通常在路由里做端口映射时,我们不会把22端口直接映射出去,而是转换成其他端口号,这时就需要使用-p端口号命令格式。要改变端口号,我们需要修改 /etc/ssh/ssh_config 文件,找到此行:Port 22把它换成其他的端口号,比如上面示例的 6222 端口,然后重启 SSH 服务。4、通过远程主机1跳到远程主机2:
# ssh -t 192.168.120.120 ssh 192.168.120.135root@192.168.120.120's password: root@192.168.120.135's password: Last login: Tue Apr 11 14:16:45 2017 from 192.168.120.120# hostnamenisserver# exit登出Connection to 192.168.120.135 closed.Connection to 192.168.120.120 closed.# hostnameshiyan说明:当远程主机remoteserver2无法直接到达时,可以使用-t参数,然后由remoteserver1跳转到remoteserver2。在此过程中要先输入remoteserver1的密码,然后再输入remoteserver2的密码,然后就可以操作remoteserver2了。5、通过SSH运行远程shell命令:
[root@lianxi ~]# ls /root/
anaconda-ks.cfg RPM-GPG-KEY.art.txt RPM-GPG-KEY.atomicorp.txt[root@shiyan ~]# ssh -l root 192.168.120.120 ls /root/root@192.168.120.120's password: anaconda-ks.cfgRPM-GPG-KEY.art.txtRPM-GPG-KEY.atomicorp.txt[root@lianxi ~]# ls /root/ && ls /etc/selinux/
anaconda-ks.cfg RPM-GPG-KEY.art.txt RPM-GPG-KEY.atomicorp.txtconfig semanage.conf targeted[root@shiyan ~]# ssh -l root 192.168.120.120 "ls /root/ && ls /etc/selinux" root@192.168.120.120's password: anaconda-ks.cfgRPM-GPG-KEY.art.txtRPM-GPG-KEY.atomicorp.txtconfigsemanage.conftargeted说明:连接到远程主机,并执行远程主机的command命令对所有数据请求压缩
有了这个选项,所有通过 SSH 发送或接收的数据将会被压缩,并且任然是加密的。要使用 SSH 的压缩功能,使用 -C 选项。# ssh -C 192.168.120.135如果你的连网速度很慢的话,使用的是像 LAN 或其它更高级网络的话,压缩反而会降低你的传输速度。可以使用 -o 选项加上压缩级别参数来控制压缩的级别,但这个选项仅仅只在 SSH-1 下起作用。 绑定源地址如果你的客户端有多于两个以上的 IP 地址,你就不可能分得清楚在使用哪一个 IP 连接到 SSH 服务器。我们可以使用 -b 选项来指定一个IP 地址。这个 IP 将会被使用做建立连接的源地址。# ssh -b 192.168.0.200 -l leni 192.168.0.103使用其他配置文件
要使用指定的配置文件,可以使用 -F 选项。# ssh -F /home/pungki/my_ssh_config 192.168.0.101打开调试模式
因为某些原因,我们想要追踪调试我们建立的 SSH 连接情况。SSH 提供的 -v 选项参数正是为此而设的。# ssh -v 192.168.120.135OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013debug1: Reading configuration data /etc/ssh/ssh_configdebug1: /etc/ssh/ssh_config line 56: Applying options for *debug1: Connecting to 192.168.120.135 [192.168.120.135] port 22.debug1: Connection established.... ...root@192.168.120.135's password:ssh-keygen命令用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。
语法 ssh-keygen(选项) 选项 -b:指定密钥长度; -e:读取openssh的私钥或者公钥文件; -C:添加注释; -f:指定用来保存密钥的文件名; -l:显示公钥文件的指纹数据; -i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥; -N:提供一个新密语; -P:提供(旧)密语; -q:静默模式; -t:指定要创建的密钥类型。# ssh-keygen -t rsa
ssh-copy-id命令
可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。 语法 ssh-copy-id [-i [identity_file]] [user@]machine 选项 -i:指定公钥文件 实例 1、把本地的ssh公钥文件安装到远程主机对应的账户下: ssh-copy-id user@server ssh-copy-id -i ~/.ssh/id_rsa.pub user@serverssh-add命令是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在/usr/bin/ssh-add。
语法 ssh-add [-cDdLlXx] [-t life] [file ...] ssh-add -s pkcs11 ssh-add -e pkcs11 选项 -D:删除ssh-agent中的所有密钥. -d:从ssh-agent中的删除密钥 -e pkcs11:删除PKCS#11共享库pkcs1提供的钥匙。 -s pkcs11:添加PKCS#11共享库pkcs1提供的钥匙。 -L:显示ssh-agent中的公钥 -l:显示ssh-agent中的密钥 -t life:对加载的密钥设置超时时间,超时ssh-agent将自动卸载密钥 -X:对ssh-agent进行解锁 -x:对ssh-agent进行加锁实例
1、把专用密钥添加到 ssh-agent 的高速缓存中: ssh-add ~/.ssh/id_dsa 2、从ssh-agent中删除密钥: ssh-add -d ~/.ssh/id_xxx.pub 3、查看ssh-agent中的密钥: ssh-add -lsftp-server命令
是一个“sftp”协议的服务器端程序,它使用加密的方式进行文件传输。 sftp-server - SFTP 服务器子系统语法 sftp-server [-f log_facility] [-l log_level]描述 sftp-server 是一个 SFTP 协议的服务端程序,它要求客户端从 stdin 发起请求,并将应答发送到 stdout 。 一般不直接调用 sftp-server ,而是通过sshd配置文件中的 Subsystem 指令调用。 sftp-server 的命令行选项应当在 sshd 配置文件中的 Subsystem 指令中设置。ssh-agent命令
是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到ssh-agent程序中。通过使用环境变量,可定位代理并在登录到其他使用ssh机器上时使用代理自动进行身份验证。 其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。语法 ssh-agent [-c | -s] [-d] [-a bind_address] [-t life] [command [arg ...]] ssh-agent [-c | -s] -k 选项 -a bind_address:bind the agent to the UNIX-domain socket bind_address. -c:生成C-shell风格的命令输出。 -d:调试模式。 -k:把ssh-agent进程杀掉。 -s:生成Bourne shell 风格的命令输出。 -t life:设置默认值添加到代理人的身份最大寿命。 实例: 运行ssh-agent,它会打印出来它使用的环境和变量。# ssh-agentSSH_AUTH_SOCK=/tmp/ssh-SeBuaIs1LFwc/agent.11523; export SSH_AUTH_SOCK;SSH_AGENT_PID=11524; export SSH_AGENT_PID;echo Agent pid 11524;sshd命令
是openssh软件套件中的服务器守护进程。 语法 sshd(选项) 选项 -4:强制使用IPv4地址; -6:强制使用IPv6地址; -D:以后台守护进程方式运行服务器; -d:调试模式; -f:指定服务器的配置文件; -e:将错误发送到标准错误设备,而不是将其发送到系统日志; -h:指定读取主机key文件; -g:指定客户端登录时的过期时间,如果在此期限内,用户没有正确认证,则服务器断开次客户端的连接; -i:ssh以inetd方式运行; -o:指定ssh的配置选项; -p:静默模式,没有任何信息写入日志; -t:测试模式。 ssh-keyscan命令是一个收集大量主机公钥的使用工具。 语法 ssh-keyscan(选项)(参数) 选项-4:强制使用IPv4地址; -6:强制使用IPv6地址; -f:从指定文件中读取“地址列表/名字列表”; -p:指定连接远程主机的端口; -T:指定连接尝试的超时时间; -t:指定要创建的密钥类型; -v:信息模式,打印调试信息。 参数 主机列表:指定要收集公钥的主机列表。sftp命令
是一款交互式的文件传输程序,命令的运行和使用方式与ftp命令相似,但是,sftp命令对传输的所有信息使用ssh加密,它还支持公钥认证和压缩等功能。 语法 sftp(选项)(参数) 选项 -B:指定传输文件时缓冲区的大小; -l:使用ssh协议版本1; -b:指定批处理文件; -C:使用压缩; -o:指定ssh选项; -F:指定ssh配置文件; -R:指定一次可以容忍多少请求数; -v:升高日志等级。 参数 目标主机:指定sftp服务器ip地址或者主机名。