Linux操作系統如何使用SSH命令連接另外一台Linux服務器


前言

1、linux服務器下一般都會安裝ssh服務ssh服務可以建立安全的遠程連接,方便日常通過一台linux設備維護其他的服務器設備。

2、SSH是一種網絡協議,用於計算機之間的加密登錄。如果一個用戶從本地計算機,使用SSH協議登錄另一台遠程計算機,我們就可以認為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。最早的時候,互聯網通信都是明文通信,一旦被截獲,內容就暴露無疑。1995年,芬蘭學者Tatu Ylonen設計了SSH協議,將登錄信息全部加密,成為互聯網安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的標准配置。
3、SSH之所以能夠保證安全,原因在於它采用了公鑰加密。整個過程是這樣的:
(1)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。
(2)用戶使用這個公鑰,將登錄密碼加密后,發送回來。
(3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。

安裝SSH服務

1、如果你用的是redhat,fedora,centos等系列linux發行版,那么敲入以下命令:
sudo yum install sshd 或
sudo yum install openssh-server(由osc網友 火耳提供)
 
2、如果你使用的是debian,ubuntu,linux mint等系列的linux發行版,那么敲入以下命令:
sudo apt-get install sshd 或
sudo apt-get install openssh-server(由osc網友 火耳提供)
 
然后按照提示,安裝就好了。

由於本機在之前就已經安裝好了SSH服務,所以提示如下:

開啟SSH服務

service sshd start

執行命令結果如下:

卸載SSH服務

1、如果你用的是redhat,fedora,centos等系列linux發行版,那么敲入以下命令:
yum remove sshd
2、如果你使用的是debian,ubuntu,linux mint等系列的linux發行版,那么敲入以下命令:
sudo apt-get –purge remove sshd

執行命令結果如下:

Linux操作系統從一台服務器SSH遠程連接至另一台服務器

示例1

直接連接遠程主機端口

前提條件:

兩台服務器A、B;當前所在位置:服務器A;SSH服務已安裝。

判斷:

在服務器A中執行命令 ping B的IP地址 ,在能ping通的前提條件下

進入服務器A后,輸入:

ssh -l 主機名 IP
  1. 主機名:要跳轉的Linux服務器的主機名
  2. IP:要跳轉的Linux服務器的ip地址

或者:

ssh 用戶名@服務器地址

然后回車輸入服務器B的用戶密碼就可以跳轉到另一台服務器B。如 ssh root@127.0.0.1 

示例2

1、假定你要以用戶名user,登錄遠程主機host,只要一條簡單命令:

$ ssh username@remote_host 
如:ssh pika@192.168.0.111

2、如果本地主機用戶名與遠程主機用戶名一致,登錄時可以省略用戶名:

$ ssh remote_host 
如:ssh 192.168.0.111

3、SSH服務的默認端口是22:你的登錄請求會送進遠程主機的22端口。使用p參數,可以修改這個端口。(指定端口連接)

ssh username@remote_host -p 2222
如:$ ssh user@host -p 2222   該條命令表示,ssh直接連接遠程主機的2222端口。

4、第一次登錄遠程主機:

如果你是第一次登錄對方主機

$ ssh root@12.18.429.21

系統會出現下面的提示::

The authenticity of host 'host (12.18.429.21)' can't be established.

RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.

Are you sure you want to continue connecting (yes/no)?

這段話的意思是,無法確認host主機的真實性,只知道它的公鑰指紋,問你還想繼續連接嗎?

所謂"公鑰指紋",是指公鑰長度較長(這里采用RSA算法,長達1024位),很難比對,所以對其進行MD5計算,將它變成一個128位的指紋。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再進行比較,就容易多了。

很自然的一個問題就是,用戶怎么知道遠程主機的公鑰指紋應該是多少?回答是沒有好辦法,遠程主機必須在自己的網站上貼出公鑰指紋,以便用戶自行核對。

假定經過風險衡量以后,用戶決定接受這個遠程主機的公鑰。

Are you sure you want to continue connecting (yes/no)? yes

系統會出現一句提示,表示host主機已經得到認可。

Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.

然后,會要求輸入密碼。

Password: (enter password)

如果密碼正確,就可以登錄了。

當遠程主機的公鑰被接受以后,它就會被保存在文件$HOME/.ssh/known_hosts之中。下次再連接這台主機,系統就會認出它的公鑰已經保存在本地了,從而跳過警告部分,直接提示輸入密碼。

每個SSH用戶都有自己的known_hosts文件,此外系統也有一個這樣的文件,通常是/etc/ssh/ssh_known_hosts,保存一些對所有用戶都可信賴的遠程主機的公鑰。

示例3

1、使用密碼登錄,用戶每次都必須輸入密碼,非常麻煩。好在SSH還提供了公鑰登錄,可以省去輸入密碼的步驟。

2、所謂"公鑰登錄",原理很簡單,就是用戶將自己的公鑰儲存在遠程主機上。登錄的時候,遠程主機會向用戶發送一段隨機字符串,用戶用自己的私鑰加密后,再發回來。遠程主機用事先儲存的公鑰進行解密,如果成功,就證明用戶是可信的,直接允許登錄shell,不再要求密碼。
3、這種方法要求用戶必須提供自己的公鑰。如果沒有現成的,可以直接用  ssh-keygen 命令生成一個:
運行上面的命令以后,系統會出現一系列提示,可以一路回車。其中有一個問題是,要不要對私鑰設置口令(passphrase),如果擔心私鑰的安全,這里可以設置一個。

運行結束以后,在$HOME/.ssh/目錄下,會新生成兩個文件:id_rsa.pub和id_rsa。前者是你的公鑰,后者是你的私鑰。 

4、這時再輸入下面的命令,將公鑰傳送到遠程主機host上面:

$ ssh-copy-id user@host

好了,從此你再登錄,就不需要輸入密碼了。

5、如果還是不行,就打開遠程主機的 /etc/ssh/sshd_config 這個文件,檢查下面幾行前面"#"注釋是否取掉。

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

然后,重啟遠程主機的ssh服務:

// ubuntu系統

service ssh restart

// debian系統

/etc/init.d/ssh restart

示例4

通過密鑰連接:

ssh -i path/to/key_file username@remote_host

示例5

ssh跳板:通過跳板機器連接遠程主機;多個跳板使用逗號隔開

ssh -J username@jump_host username@remote_host

實例

本實例的客戶端和服務端均為Ubuntu操作系統。

ssh客戶端:

用戶名(user_name): alpha
IP地址(client_ip): 192.168.0.33

ssh服務端:

用戶名(user_name): omega
IP地址(server_ip): 119.9.90.190

ssh服務器遠程登錄

1 普通登錄: ssh user_name@server_ip

[alpha@客戶端] :~$ ssh omega@119.9.90.190
輸入omega@119.9.90.190的密碼:
loading omega@119.9.90.190 ...
welcome!
[omega@服務端] :~$ 

2 免ip登錄: ssh Host

2.1 客戶端alpha用戶進入隱藏ssh目錄
[alpha@客戶端] :~$ cd ~/.ssh
[alpha@客戶端] :~/.ssh$ pwd
/home/exia/.ssh 
2.2 新建/修改config文件: sudo vim config

config文件單元構成:

Host: 登錄名
----HostName: 將要登錄ssh服務器ip
----User: 將要登錄服務器用戶名
----Port: 將要登錄服務器端口

config文件中可以設置多個Host:

[alpha@客戶端] :~$ cat config
Host omi
    HostName 119.9.90.190
    User omega
    Port 22

Host theroot
     HostName 119.9.90.190
    User root
    Port 22
2.3 實現免ip登錄
[alpha@客戶端] :~$ ssh omi

輸入omega@119.9.90.190的密碼:
loading omega@119.9.90.190 ...
welcome!

[omega@服務端] :~$ 

3 免密登錄: ssh -i id_rsa Host 和 ssh Host

3.1 客戶端alpha用戶進入隱藏ssh目錄
3.2 生成ssh登錄密鑰與公鑰(若之前未生成) 
[alpha@客戶端] :~/.ssh$ ls
config
[alpha@客戶端] :~/.ssh$ ssh-keygen
[alpha@客戶端] :~/.ssh$ ls
config  id_rsa  id_rsa.pub
3.3 將公鑰發送給需要免密登錄的服務器的用戶
[alpha@客戶端] :~/.ssh$ ssh-copy-id omega@119.9.90.190;echo "ssh-copy-id omi 也行"
ssh-copy-id omi 也行
[alpha@客戶端] :~/.ssh$ echo "開始免密登錄"
# 開始免密登錄
[alpha@客戶端] :~/.ssh$ 
[alpha@客戶端] :~/.ssh$ 
[alpha@客戶端] :~/.ssh$ ssh -i id_rsa omi
loading omega@119.9.90.190 ...
welcome!

[omega@服務端] :~$ cd ~/.ssh
[omega@服務端] :~/.ssh$ ls
authorized_keys

此時,[omega@服務端] :~/.ssh/authorized_keys 中已經存放了[alpha@客戶端] :~/.ssh/id_rsa.pub中的公鑰了。

當然直接打開[alpha@客戶端] :~/.ssh/id_rsa.pub 將其中的內容復制粘貼到 [omega@服務端] :~/.ssh/authorized_keys 中最后一行也是可以的。

3.4 最后, 在config文件中各Host的最后添加IdentityFile ~/.ssh/id_rsa:
[alpha@客戶端] :~$ cat config
Host omi
    HostName 119.9.90.190
    User omega
    Port 22
    IdentityFile ~/.ssh/id_rsa

Host theroot
     HostName 119.9.90.190
    User root
    Port 22
    IdentityFile ~/.ssh/id_rsa

即可進一步簡化ssh遠程登錄命令:

[alpha@客戶端] :~/.ssh$ ssh omi
loading omega@119.9.90.190 ...
welcome!

[omega@服務端] :~$ 

如果服務端相應免密用戶的密碼或是用戶名有更改, 需要對客戶端中對應用戶~/.ssh下:

(1)修改config中Host的信息
(2)刪除 known hosts文件

 

 

補充1:不用輸入ssh -i命令行即可攜帶pem文件快速登錄的方法

1、如果要登錄的Linux服務器只允許pem認證。

ssh -i ~/.ssh/id_rsa.pub azureuser@10.111.12.123

其中的  -i  選項表明,選擇一個和公鑰匹配的私鑰文件路徑。默認是~/.ssh/id_rsa。

2、但是每次輸入 ssh -i xxxx.pem 用戶@ip 地址   就很煩。

3、有個一勞永逸的方法:

進入到自己的用戶目錄,例如/home/me

把.pem文件放在當前目錄

然后vi .ssh/config

內容如下:

Host *
      ServerAliveInterval 60
  Host denglu
      HostName 你的ip
      User mojie
      IdentityFile    ~/.ssh/你的pem文件名.pem

保存后,更改權限: sudo chmod 600 key.pem  

然后在當前目錄/home/me下輸入  ssh denglu

即可登錄到目標服務器。再也不用每次輸入長長的命令了

補充2:Linux操作系統中的路徑符號

補充3: exit 退出遠程連接服務器,回到本機的命令終端

 

 

 

文章主要轉載自:https://www.jianshu.com/p/10023495fba9


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM