ssh相关命令
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 -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
2、连接到远程主机:
# hostname
lianxi
# ssh 192.168.120.135
The 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 :0
There 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
# hostname
lianxi
# exit
登出
Connection to 192.168.120.120 closed.
# hostname
shiyan
# hostname
shiyan
# ssh 192.168.120.120 -l root
root@192.168.120.120's password:
Last login: Tue Apr 11 14:02:34 2017 from 192.168.120.114
# hostname
lianxi
说明:以上两种方式都可以远程登录到远程主机,server代表远程主机,name为登录远程主机的用户名。
# hostname
lianxi
# ssh 192.168.120.135
The 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 :0
There 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 6222
ssh 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.135
root@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
# hostname
nisserver
# exit
登出
Connection to 192.168.120.135 closed.
Connection to 192.168.120.120 closed.
# hostname
shiyan
说明:当远程主机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.cfg
RPM-GPG-KEY.art.txt
RPM-GPG-KEY.atomicorp.txt
[root@lianxi ~]# ls /root/ && ls /etc/selinux/
anaconda-ks.cfg RPM-GPG-KEY.art.txt RPM-GPG-KEY.atomicorp.txt
config 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.cfg
RPM-GPG-KEY.art.txt
RPM-GPG-KEY.atomicorp.txt
config
semanage.conf
targeted
说明:连接到远程主机,并执行远程主机的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.135
OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /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@server
ssh-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 -l
sftp-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-agent
SSH_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地址或者主机名。
ssh相关命令的更多相关文章
- Git相关命令教程
一.在GitHub上创建新项目 (1)在GitHub首页 “New repository”,创建新版本库“test” (2)在本地使用GitBash,将repository clone到本地 git ...
- Linux网络——配置防火墙的相关命令
Linux网络——配置防火墙的相关命令 摘要:本文主要学习了如何在Linux系统中配置防火墙. iptables命令 iptables准确来讲并不是防火墙,真正的防火墙是运行于系统内核中的netfil ...
- linux 搜索相关命令(2)
文件搜索相关命令 1:locate命令 需要 yum install mlocate locate 文件名 在后台数据库中按文件名搜索,搜索速度更快 /var/lib/mlocate #locate命 ...
- 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令
Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...
- linux 目录结构及其相关命令
目录也是一个文件,它的唯一功能是用来保存文件及其相关信息.所有的文件,包括普通文件.设备文件和目录文件,都会被保存到目录中. 主目录 登录后,你所在的位置就是你的主目录(或登录目录),如果是root用 ...
- Shell编程基础教程5--文本过滤、正则表达式、相关命令
5.文本过滤.正则表达式.相关命令 5.1.正则表达式(什么是正则表达式?正则表达式怎么进行匹配?常用命令) 简介: 一种用来描述文本模式的特殊语法 ...
- Linux文件管理相关命令
Linux文件管理相关命令 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在了解了Linux文件管理背景知识之后, 我们可以 ...
- mysql主从复制replication的一些相关命令
主服务器上的相关命令:show master status; mysql> show master status\G . row *************************** Posi ...
- sqlplus 配置方法及相关命令
sqlplus 配置方法及相关命令 1.配置文件 1.1 全局模式什么叫全局模式呢:当我们配置完sqlplus工具加载配置文件后,无论在哪个目录下登陆数据库,您设置[sqlplus提示符样子,在任何目 ...
随机推荐
- Android--带你一点点封装项目 MVP+BaseActivity+Retrofit+Dagger+RxJava(三)
1,这一篇博客是和大家一起来封装我们最后的Dagger2,其实之前也写过关于简单的Dagger2,这里是地址,完全没了解的同学可以先去看一下这篇,感谢很多小伙伴一直在耐心的等待这一篇 2,Dagger ...
- 【js】性能问题
执行环境和作用域 一.全局变量和局部变量 每个执行环境都有与之关联的变量对象(变量和函数存储在这里),全局执行环境是最外围的执行环境,根据ECMA实现所在的宿主不同,表示的执行环境的对象也不同.在we ...
- cocos2dx 中文路径编译错误记录
'/Q' 不是内部或外部命令,也不是可运行的程序1> 或批处理文件.1> 'y' 不是内部或外部命令,也不是可运行的程序1> 或批处理文件.1>C:\Program Files ...
- mtime,ctime,atime
mtime,ctime,atime是linux三个主要的变动时间. 这三个时间比较容易理解,但是不容易记忆,也容易搞混. mtime (modification time) 文件内容数据更改时,会更 ...
- UITextField输入限制/小数/首位等
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS ...
- js实现ajax的post请求步骤
post请求步骤与前篇的get请求步骤差别不大,只是增加了 xhr.setRequestHeader("Content-type","application/x-www- ...
- Redis命令总结及其基础知识讲述
1.redis的不同之处 Redis拥有其他数据库不具备的数据结构,又拥有内存存储(这使得redis的速度非常快),远程操作(使得redis可以与多个客户端和服务器进行连接).持久化(使得服务器可以在 ...
- mybatis基础学习3---特殊sql语句(备忘)
1: 2: 3:resultMap的用法
- [Linux] PHP程序员玩转Linux系列-自动备份与SVN
我的代码经常在开发修改,为了代码的安全性,比如哪天误删了文件,或者哪天改错东西了,可以恢复回来,我要搞代码备份.备份代码,我先做最简单的,使用linux的定时机制加shell命令打包文件,每天按日期保 ...
- 技术方案:在外部网址调试本地js(基于fiddler)
1 解决的问题 1) 场景1:生产环境报错 对前台开发来说,业务逻辑都在js中,所以报错90%以上都是js问题. 如果生产环境出现报错,但是测试环境正常.这时修改了代码没有环境验证效果, ...