概述
ssh
命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理。
在脚本中该命令有着重要重要,可用于在远程服务器中执行命令。
语法
ssh
命令的基本语法如下:ssh [选项] [参数]
。
常用选项如下:
选项 | 说明 |
---|---|
-1 | 强制使用ssh协议版本1 |
-2 | 强制使用ssh协议版本2 |
-4 | 强制使用IPv4地址 |
-6 | 强制使用IPv6地址 |
-A | 开启认证代理连接转发功能 |
-a | 关闭认证代理连接转发功能 |
-b<IP地址> | 使用本机指定的地址作为对位连接的源IP地址 |
-C | 请求压缩所有数据 |
-F<配置文件> | 指定ssh指令的配置文件,默认的配置文件为“/etc/ssh/ssh_config” |
-f | 后台执行ssh指令 |
-g | 允许远程主机连接本机的转发端口 |
-i<身份文件> | 指定身份文件(即私钥文件) |
-l<登录名> | 指定连接远程服务器的登录用户名 |
-N | 不执行远程指令 |
-o<选项> | 指定配置选项 |
-p<端口> | 指定远程服务器上的端口 |
-q | 静默模式,所有的警告和诊断信息被禁止输出 |
-X | 开启X11转发功能 |
-x | 关闭X11转发功能 |
-y | 开启信任X11转发功能 |
参数通常为远程服务器的IP地址。
使用
登录远程服务器
可以在本地服务器通过远程服务器的IP地址进行登录,命令如下:
ssh xxx.xxx.xxx.xxx
参数说明:
xxx.xxx.xxx.xxx
为远程服务器的IP地址。
例如,使用的是root用户,如果不是建立信任关系的服务器,则每次ssh
连接都需要输入远程服务器的登录密码。可以明确看到蓝色方框内的服务器名字是两个,表示成功登录到远程服务器。如果要退出远程服务器则输入exit
命令即可。
注意,当我们第一次连接远程服务器的时候,会在/root/.ssh
目录下生成一个名为known_hosts
的文件,该文件的内容是我们连接的远程服务器的信息,如果以前连接过远程服务器并且该文件存在那么刚刚连接的远程服务器信息会追加在known_hosts
文件的最后。
使用指定用户连接远程服务器
可以使用指定的用户连接远程服务器,使用-l
选项指定用户名即可,命令如下:
ssh -l remoteuser xxx.xxx.xxx.xxx
参数说明:
user
为远程服务器的用户。例如,使用远程服务器的test
用户。xxx.xxx.xxx.xxx
为远程服务器的IP地址。例如,远程服务器IP地址192.168.40.60
。
例如,使用test用户登录远程服务器,注意,需要输入test用户的登录密码。
在远程服务器执行命令【★★★★★】
可以通过ssh
命令连接登录远程服务器并且执行命令,该命令是作用在远程服务器上的,但是结果显示在本地服务器上。命令格式如下:
ssh xxx.xxx.xxx.xxx command
参数说明:
xxx.xxx.xxx.xxx
为远程服务器的IP地址。例如,远程服务器IP地址192.168.40.60
。command
指的是待执行的命令。如ls /root
查看root目录下的文件;如rm -rf /home/hello.txt
删除home目录下的hello.txt文件,这些命令都是可以执行的。
例如,查看远程服务器上的home目录下的文件列表信息,结果会显示在本地服务器显示器上,并且并没有切换到远程服务器。
该命令非常重要,在脚本中很常见。
拓展延申
- 如果想要执行
ssh
命令不用每次都输入密码,则需要在两台服务器之间建立信任关系,请参考:让两台甚至多台Linux服务器建立SSH信任关系。 - 连接远程服务器会在
/root/.ssh
目录下生成一个known_hosts
文件,该文件记录了连接过的远程服务器信息。 - 通常情况下,会把
known_hosts
文件与authorized_keys
文件做对比:authorized_keys
文件由本地服务器生成,放置于远程服务器的/root/.ssh
目录下来实现免密登录;known_hosts
文件也由本地服务器生成,放置于本地服务器的/root/.ssh
目录下用于记录连接过的远程服务器信息。