Linux 中的 5 個(gè) SSH 別名例子
作為一個(gè) Linux 用戶,我們常用 ssh 命令[1] 來(lái)登入遠(yuǎn)程機(jī)器。ssh 命令你用得越多,你在鍵入一些重要的命令上花的時(shí)間也越多。我們可以用 定義在你的 .bashrc 文件里的別名[2] 或函數(shù)來(lái)大幅度縮減花在命令行界面(CLI)的時(shí)間。但這不是最佳解決之道。最佳辦法是在 ssh 配置文件中使用 SSH 別名 。
這里是我們能把 ssh 命令用得更好的幾個(gè)例子。
ssh 登入到 AWS(譯注:Amazon Web Services,亞馬遜公司旗下云計(jì)算服務(wù)平臺(tái))實(shí)例的連接是一種痛。僅僅輸入以下命令,每次也完全是浪費(fèi)你時(shí)間。
ssh -p 3000 -i /home/surendra/mysshkey.pem ec2-user@ec2-54-20-184-202.us-west-2pute.amazonaws
縮短到:
ssh aws1
調(diào)試時(shí)連接到系統(tǒng)。
ssh -vvv the_good_user@red1.taggle.abc.au
縮短到:
ssh xyz
在本篇中,我們將看到如何不使用 bash 別名或函數(shù)實(shí)現(xiàn) ssh 命令的縮短。ssh 別名的主要優(yōu)點(diǎn)是所有的 ssh 命令快捷方式都存儲(chǔ)在一個(gè)單一文件,如此就易于維護(hù)。其他優(yōu)點(diǎn)是 對(duì)于類(lèi)似于 SSH 和 SCP 的命令 我們能用相同的別名。
在我們進(jìn)入實(shí)際配置之前,我們應(yīng)該知道 /etc/ssh/ssh_config、/etc/ssh/sshd_config 和 ~/.ssh/config 文件三者的區(qū)別。以下是對(duì)這些文件的解釋。
/etc/ssh/ssh_config 和 ~/.ssh/config 間的區(qū)別
系統(tǒng)級(jí)別的 SSH 配置項(xiàng)存放在 /etc/ssh/ssh_config,而用戶級(jí)別的 SSH 配置項(xiàng)存放在 ~/.ssh/config 文件中。
/etc/ssh/sshconfig 和 /etc/ssh/sshdconfig 間的區(qū)別
系統(tǒng)級(jí)別的 SSH 配置項(xiàng)是在 /etc/ssh/ssh_config 文件中,而系統(tǒng)級(jí)別的 SSH 服務(wù)端配置項(xiàng)存放在 /etc/ssh/sshd_config 文件。
在 ~/.ssh/config 文件里配置項(xiàng)的語(yǔ)法
~/.ssh/config 文件內(nèi)容的語(yǔ)法:
配置項(xiàng) 值配置項(xiàng) 值1 值2
例 1: 創(chuàng)建主機(jī)(linuxnix)的 SSH 別名
編輯 ~/.ssh/config 文件寫(xiě)入以下內(nèi)容:
Host tlj User root HostName 18.197.176.13 port 22
保存此文件。
以上 ssh 別名用了
☉ tlj 作為一個(gè)別名的名稱(chēng)☉ root 作為將要登入的畢業(yè)證書(shū)編號(hào)☉ 18.197.176.13 作為主機(jī)的 IP 地址☉ 22 作為訪問(wèn) SSH 服務(wù)的端口
輸出:
sanne@Surendras-MacBook-Pro:~ > ssh tljWelcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-93-generic x86_64) Documentation: help.ubuntu Management: landscape.canonical * Support: ubuntu/advantage Get cloud support with Ubuntu Advantage Cloud Guest: ubuntu/business/services/cloudLast login: Sat Oct 14 01:00:43 2017 from 20.244.25.231root@linuxnix:~# exitlogoutConnection to 18.197.176.13 closed.
例 2: 不用密碼用 ssh 密鑰登到系統(tǒng)要用 IdentityFile 。
例:
Host aws User ec2-users HostName ec2-54-200-184-202.us-west-2pute.amazonaws IdentityFile ~/Downloads/surendra.pem port 22
例 3: 對(duì)同一主機(jī)使用不同的別名。在下例中,我們對(duì)同一 IP/主機(jī) 18.197.176.13 用了 tlj、 linuxnix、linuxnix 三個(gè)別名。
~/.ssh/config 文件內(nèi)容
Host tlj linuxnix linuxnix User root HostName 18.197.176.13 port 22
輸出:
sanne@Surendras-MacBook-Pro:~ > ssh tljWelcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-93-generic x86_64) Documentation: help.ubuntu Management: landscape.canonical Support: ubuntu/advantageGet cloud support with Ubuntu Advantage Cloud Guest:ubuntu/business/services/cloudLast login: Sat Oct 14 01:00:43 2017 from 220.244.205.231root@linuxnix:~# exitlogoutConnection to 18.197.176.13 closed.sanne@Surendras-MacBook-Pro:~ > ssh linuxnixWelcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-93-generic x86_64) Documentation: help.ubuntu Management: landscape.canonical Support: ubuntu/advantage
Get cloud support with Ubuntu Advantage Cloud Guest:ubuntu/business/services/cloudLast login: Sun Oct 15 20:31:08 2017 from 1.129.110.13root@linuxnix:~# exitlogoutConnection to 138.197.176.103 closed.[6571] sanne@Surendras-MacBook-Pro:~ > ssh linuxnixWelcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-93-generic x86_64) Documentation: help.ubuntu Management: landscape.canonical* Support: ubuntu/advantageGet cloud support with Ubuntu Advantage Cloud Guest:ubuntu/business/services/cloudLast login: Sun Oct 15 20:31:20 2017 from 1.129.110.13root@linuxnix:~# exitlogoutConnection to 18.197.176.13 closed.
例 4: 用相同的 SSH 別名復(fù)制文件到遠(yuǎn)程系統(tǒng)
語(yǔ)法:
scp <文件名> :<位置>
例子:
sanne@Surendras-MacBook-Pro:~ > scp abc.txt tlj:/tmpabc.txt 100% 12KB 11.7KB/s 00:01 sanne@Surendras-MacBook-Pro:~ >
若我們已經(jīng)將 ssh 主機(jī)設(shè)置好一個(gè)別名,由于 ssh 和 scp 兩者用幾乎相同的語(yǔ)法和選項(xiàng),scp 也可以輕易使用。
請(qǐng)?jiān)谙旅鎳L試從本機(jī) scp 一個(gè)文件到遠(yuǎn)程機(jī)器。
例 5: 解決 Linux 中的 SSH 超時(shí)問(wèn)題。默認(rèn)情況,如果你不積極地使用終端,你的 ssh 登入就會(huì)超時(shí)
SSH 超時(shí)問(wèn)題[3] 是一個(gè)更痛的點(diǎn)意味著你在一段時(shí)間后不得不重新登入到遠(yuǎn)程機(jī)器。我們能在 ~/.ssh/config 文件里邊恰當(dāng)?shù)卦O(shè)置 SSH 超時(shí)時(shí)間來(lái)使你的會(huì)話不管在什么時(shí)間總是激活的。我們將用 2 個(gè)能保持會(huì)話存活的 SSH 選項(xiàng)來(lái)實(shí)現(xiàn)這一目的。之一是 ServerAliveInterval 保持你會(huì)話存活的秒數(shù)和 ServerAliveCountMax 在(經(jīng)歷了一個(gè))給定數(shù)值的會(huì)話之后初始化會(huì)話。
ServerAliveInterval AServerAliveCountMax B
例:
Host tlj linuxnix linuxnix User root HostName 18.197.176.13 port 22 ServerAliveInterval 60 ServerAliveCountMax 30