1. 程式人生 > >ssh 命令詳解

ssh 命令詳解

https://linux.cn/article-3858-1.html

如果你已經在IT圈內混久了, 應該對 SSH 這個了不起的工具及其安全特性有所耳聞吧. 本教程可以讓你在短時間內掌握通過 SSH 安全便利地連線到遠端計算機的技術.

如果你對 SSH 還沒什麼概念, 可以先訪問 維基百科 進行了解.

基本用法

最簡單的 SSH 命令只需要指定使用者名稱和主機名引數即可. 主機名可以是 IP 地址或者域名. 命令格式如下:

  1. $ ssh [email protected]

比如要在我的區域網內登入一個樹莓派系統, 只需要簡單的在命令列輸入如下命令:

  1. $ ssh [email protected]
    .42.0.47

命令中的 pi 和 10.42.0.47 分別是我的樹莓派系統的使用者名稱和區域網 IP 地址. 實際使用時主機名需要改成你的目標主機(區域網內或者遠端)的 IP 地址.

basic ssh

basic ssh

如果你能夠成功登陸, 那麼下面的內容對你來說就輕而易舉了.

使用其他埠

SSH 預設連線到目標主機的 22 埠上,但是由於各種原因你可能需要連線到其他埠.

  1. $ ssh-p 10022 [email protected]

如上命令就是通過新增引數 -p 指定埠號為 10022.

遠端執行命令

有時在遠端主機執行一條命令並顯示到本地, 然後繼續本地工作是很方便的. SSH 就能滿足這個需求:

  1. $
    ssh [email protected].42.0.47ls-l

比如上面這個命令就會列舉遠端主機的主目錄內容並在本地顯示. 是不是很酷? 你可以嘗試下其他命令看看.

remote command

remote command

掛載遠端檔案系統

另外一個很讚的基於 SSH 的工具叫 sshfs. sshfs 可以讓你在本地直接掛載遠端主機的檔案系統.

  1. $ sshfs -o idmap=user [email protected]:/home/user ~/Remote

比如下面這條命令:

  1. $ sshfs -o idmap=user [email protected].42.0.47:/home/pi ~/Pi

該命令就將遠端主機 pi 使用者的主目錄掛載到本地主目錄下的 Pi 資料夾.

X11 圖形介面

假如現在你想要在遠端主機執行一個圖形介面的程式, SSH 已經幫你想到了! 用前面提到的 SSH 基本命令加上引數 -X 連線到遠端主機即可開啟 X11 轉發功能. 登入後你可能覺得沒什麼差別, 但是當你執行一個圖形介面程式後就會發現其中的不同的.

  1. $ ssh-X [email protected].42.0.47
  2. $ pistore

如果你想在執行圖形介面程式的同時做些別的事情, 只需要簡單地在命令末尾加一個 & 符號.

  1. $ pistore&

X11 forwarding

X11 forwarding

轉義字元

SSH 提供了多樣的轉義字元功能. 用 SSH 連線到任意一臺遠端主機然後輸入 ~? 你就可以看到支援的轉義字元和功能說明列表. 以下例子展示了 ~# 和 ~C 的效果.

escape sequences

escape sequences

配置 SSH

如果你需要改變 SSH 的配置, 請用你喜好的文字編輯器開啟 /etc/ssh/sshd_config 進行編輯. 比如你想改變登陸的標語, 在配置檔案中找到下面這行:

  1. #Banner none

刪除 # 字元(取消該行的註釋), 將 none 替換為包含你期望顯示內容的檔案地址. 修改後該行應該類似這樣:

  1. Banner/etc/issue

在配置檔案 /etc/ssh/sshd_config 中你還可以找到埠號, 空閒超時時間等配置項. 配置項大都比較容易理解, 但是保險起見在你修改一些不是很確定的配置項時最好參考下 SSH 的幫助文件.

構建 ssh 金鑰對

執行以下命令建立金鑰對:

  1. $ ssh-keygen -t dsa

此命令會要求你輸入密碼(可以留空), 然後就會生成金鑰並會顯示一張該金鑰對應的隨機圖.

generate key pair

generate key pair

尋找主機金鑰

在你準備新增金鑰之前不妨先用以下命令看看是否已經添加了對應主機的金鑰了.

  1. $ ssh-keygen -F 10.42.0.47

find hostkey

find hostkey

刪除主機金鑰

某些情況下, 比如主機地址更改或者不再使用某個金鑰, 你就可能需要刪除某個金鑰.

  1. $ ssh-keygen -R 10.42.0.47

用以上命令就可刪除. 這比手動在 ~/.ssh/known_hosts 檔案中刪除要方便很多.

remove hostkey

remove hostkey

總結

通過以上的內容你應該可以輕鬆使用 SSH 了. SSH 還有很多功能值得你去發掘, 這就要看你的想象力了。