共计 1721 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 因为使用环境完全切换到了 Fedora 下,Fedora 可没有 Windows 下 Xshell 那么额外的 ssh 连接工具。Fedora 有 ssh 命令足够替代习惯使用 Xshell 的用户 (我这样的) 来连接管理远程服务器,本片文章就简单记录以下 ssh 命令的使用细节。 |
SSH 命令详解
语法
ssh(选项)(参数)
选项
-1:强制使用 ssh 协议版本 1;-2:强制使用 ssh 协议版本 2;-4:强制使用 IPv4 地址;-6:强制使用 IPv6 地址;-A:开启认证代理连接转发功能;-a:关闭认证代理连接转发功能;-b:使用本机指定地址作为对应连接的源 ip 地址;-C:请求压缩所有数据;-F:指定 ssh 指令的配置文件;-f:后台执行 ssh 指令;-g:允许远程主机连接主机的转发端口;-i:指定身份文件;-l:指定连接远程服务器登录用户名;-N:不执行远程指令;-o:指定配置选项;-p:指定远程服务器上的端口;-q:静默模式;-X:开启 X11 转发功能;-x:关闭 X11 转发功能;-y:开启信任 X11 转发功能。
参数
- 远程主机:指定要连接的远程 ssh 服务器;
- 指令:要在远程 ssh 服务器上执行的指令。
SSH 连接使用
语法看上去很死板累赘,其实用不到那么多。习惯中就只用这个
ssh name@server-ip
或者
ssh server-ip -l name
以上两种方式都可以远程登录到服务器,server-ip 代表远程服务器的 IP 地址,name 代表 SSH 登陆进远程服务器的用户名,一般为 root。
如果远程服务器的端口是其他的,在后面加上 - p 参数。
ssh name@server-ip -p 12345
连接成功终端就会提示继续输入用户密码,输入就好了。
SSH 使用公钥免密登陆
SSH 登录时有两种验证方式
- 基于密码的安全验证,它要求用户在每次登录服务器时输入密码,服务器端验证通过后即登录成功。
- 基于密钥的安全验证,客户端的公钥会预先保存在服务器端,当登录时,服务器端会使用该公钥做验证,如果验证成功,用户不需输入密码即完成登录。
为了避免每次都输入密码这种重复性工作,我们可以选择使用公钥进行远程登录。
本地生成密钥对终端执行
ssh-keygen
然后一路回车就行了,回车就是将密钥对保存位置和打开密码默认设置。执行完毕会提示名为 id_rsa 和 id_rsa.pub 的私钥文件和公钥文件在 /home/user/.ssh 目录下。
然后将公钥上传到远程服务器
ssh-copy-id root@server-ip
server-ip 为远程服务器的 IP 地址。然后根据提示输入密码。当看到终端显示
Number of key(s) added: 1 | |
Now try logging into the machine, with: "ssh'root@remoteserver" | |
and check to make sure that only the key(s) you wanted were added. |
代表上传成功,接着你可以只用使用“ssh root@server-ip”命令直接登陆远程服务器, 而不需要密码了
对远程服务器设置别名登陆
就算是设置免密登陆,SSH 命令后面需要带的 server-ip 也够麻烦的,过几年普及 IPV6 地址,ssh 登陆一次就欲仙欲死的。我们可以通过配置服务器别名的方式进一步免输服务器的 IP 地址。
在 /home/user/.ssh/ 目录下新建 config 文件, 内容如下:
Host hostname | |
HostName server-ip | |
User root | |
IdentitiesOnly yes |
保存退处即可。注意,第一行的 hotname 是你对服务器设置的别名,叫什么随意。第二行 server-ip 换成你的远程服务器的 IP。别真的傻乎乎的照搬复制了。
然后就可以执行“ssh hostname”命令 (hostname 换成你设置的别名) 愉快的登陆进远程服务器了。
如果报错“Bad owner or permissions on /home/root/.ssh/config”字样,那是权限的问题。
对 config 文件执行
chmod 600 config
scp 的拷贝命令。也可以直接使用,scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。当配置好 ssh 公钥和别名,在 scp 上也一样通用
正文完
星哥玩云-微信公众号
