[TOC] #### 1. mac 的 ssh --- mac 的終端自帶 ssh,不過我會使用 [iterm2](https://iterm2.com) 作為 mac 終端工具 ``` ssh 服務器用戶@服務器IP地址 ``` 輸入連接命令,回車,再輸入連接命令中使用的用戶密碼即可連接上服務器。下面是連接命令: ``` # 默認使用 22 端口連接服務器 ssh root@182.92.187.217 # 使用 -p 參數指定端口連接服務器 ssh root@182.92.187.217 -p 23 ``` 當曾經連接過遠程服務器,后來服務器重裝系統了(如:阿里云服務器更換了操作系統),再連接就會出現以下錯誤 ![](https://img.itqaq.com/art/content/3d7734fc34642a87af0f9dfa095aa480.png) 解決方案 1:直接刪除 known_hosts 文件 ```bash rm -rf ~/.ssh/known_hosts ``` 解決方案 2:刪除 known_hosts 中該 IP 相關內容 因為該文件中可能會有其他 IP 的內容,為了不影響其他 IP 的連接,所以推薦該方式 ``` # 刪除以下內容 47.106.206.43 ssh-ed25519 .... 47.106.206.43 ssh-rsa .... 47.106.206.43 ecdsa-sha2-nistp256 .... ``` #### 2. 使用 SSH 密鑰連接 --- 當經常需要連接一個服務器時,每次連接都輸入密碼就過于繁瑣了,我們可以使用 SSH 密鑰進行免密登錄 生成 SSH 密鑰(使用 github 的開發者一般都生成過,生成過的話無需重復生成) ``` ssh-keygen ``` 運行以下命令將 SSH 密鑰推送到服務器,推送時需要輸入服務器用戶密碼 ssh-copy-id 可以把本地主機的公鑰復制到遠程主機的 authorized_keys 文件,進而實現免密登錄 這個命令會在服務器上生成一個文件: `~/.ssh/authorized_keys`,文件內容就是我們推送的 SSH 密鑰 ```bash # 命令格式 ssh-copy-id 用戶@IP地址 # 使用示例 ssh-copy-id root@192.168.1.49 ssh-copy-id root@101.132.33.24 ``` 再使用 ssh 連接服務器就可以免密連接了 ![](https://img.itqaq.com/art/content/5160168285470329c280bcc91438811c.png) #### 3. 使用配置文件連接 --- 使用 SSH 密鑰連接的方式,雖然不用每次都輸入密碼,但還是要輸入服務器的用戶名和 IP 地址,還是挺麻煩的。 這時候可以給 IP 配置一個別名,進而簡化連接操作,創建文件: `~/.ssh/config`,文件內容如下: ``` Host blog Hostname 101.132.33.24 Port 22 User root IdentityFile ~/.ssh/id_rsa ``` 使用配置的別名連接服務器,只需要使用以下指令就可以連接到服務器 ``` ssh blog ``` ![](https://img.itqaq.com/art/content/59b3a558351b51367cb78668cf0c1294.png) 當需要連接多個服務器時,考慮到每個都要寫 Port、User,很麻煩,其實可以把這些公共的抽離出來 ``` Host blog Hostname 101.132.33.24 # 以下為抽離的配置 # Host * :這個的意思是,所有Host以下如果沒有配置的話,都走以下配置 # Port : 默認端口為22,如果不是22端口,可以在上面輸入 Port 2222 ,自己想要的端口進行配置 # IdentityFile : 默認的我們的密鑰文件地址位置在哪兒(也就是我們先開始生成密鑰的地址) Host * Port 22 User root ServerAliveInterval 60 ConnectTimeout 0 TCPKeepAlive yes IdentityFile ~/.ssh/id_rsa ``` #### 4. Windows 系統 --- 對于 Windows 系統用戶,如果只是連接服務器的終端,進行簡單操作,比如: 安裝寶塔面板,可以使用 git 自帶的命令行工具 `Git Bash Here` 連接。但如果想要更多功能,還是要使用專業的軟件,如 xshell ``` ssh root@182.92.70.132 ``` 首次連接會有一個操作提示,輸入 `yes` 回車即可,然后輸入服務器用戶的密碼即可連接成功 ![](https://img.itqaq.com/art/content/f6900a9344c7269b7c527d2b146b01d2.png) #### 5. 退出 SSH 連接狀態 --- 退出 SSH 連接可以使用 `exit` 命令,也可以使用快捷鍵 `control + d` ![](https://img.itqaq.com/art/content/1d5201f73efb403994fd718df8d97228.png)