SSH的兩種登錄方式以及配置


前言 SSH簡介

Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在應用層基礎上的安全網絡協議。它是專為遠程登錄會話(甚至可以用Windows遠程登錄Linux服務器進行文件互傳)和其他網絡服務提供安全性的協議,可有效彌補網絡中的漏洞。通過SSH,可以把所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。目前已經成為Linux系統的標准配置。

SSH只是一種協議,存在多種實現,既有商業實現,也有開源實現。本文主要介紹OpenSSH免費開源軟件,如果要在Windows中使用SSH,需要使用另一個軟件PuTTY。

SSH的優勢,網絡傳輸服務程序不止有SSH,還有很多。FTP、Pop和Telnet其本質上都是不安全的;因為它們在網絡上用明文傳送數據、用戶帳號和用戶口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。SSH可以通過RSA加密對傳輸內容加密,並且壓縮,所以相對較快、較安全。

SSH的驗證方式有兩種:帳密驗證和公鑰私鑰驗證,第二種方式相對較安全。

一、SSH服務程序

相關聯的RPM包:openssh(底層包)  、 openssh-clients 、 openssh-server
服務器端安裝: yum  install  openssh-server   (安裝了openssh-server會自動安裝openssh)  
客戶端安裝: yum  install  openssh-clients      (安裝了openssh-clients 會自動安裝openssh) 
卸載: yum  remove  openssh (卸載了openssh,然后會自動卸載openssh-server和openssh-clients)
服務:/usr/sbin/sshd
服務端口:tcp / 22
服務器端配置文件:/etc/ssh/sshd_config
客戶端配置文件:  /etc/ssh/ssh_config 
用法:ssh -p  22  root@192.168.10.10  ,如果配置文件中 /etc/ssh/ssh_config 默認是22號端口,則可以直接   ssh  root@192.168.10.10
服務開啟/關閉/重啟/開機自啟/開啟不自啟: systemctl  start / stop / restart / enable / disable  sshd

ssh服務端的配置文件(部分):   /etc/ssh/sshd_config

#Port 22                     //默認的端口號為22  修改端口時,取消注釋
#LoginGraceTime 2m           //ssh登錄時,密碼驗證的超時時間,默認2分鍾
#PermitRootLogin yes         //是否允許以root用戶身份登錄
#MaxAuthTries 6              //最大認證次數
#MaxSessions 10              //登錄Sessions保持的天數
#PermitEmptyPasswords no     //是否允許空密碼
PasswordAuthentication yes   //開啟密碼認證  

我們需要修改配置的時候,最終極辦法就是修改完配置文件直接重啟就行service sshd restart

命令可以檢查SSH服務是否開啟 ps -e | grep ssh   

二、口令連接

-p命令可以指定連接的端口 ssh -p 1234 name@192.168.0.

然后輸入該用戶的面即可

圖形用戶界面的連接更加簡單,不做講述。

三、公鑰登錄

在主機A上,使用 ssh-keygen,然后輸入保存的文件名(默認為id_rsa)和自己的私鑰,完成之后會在 ~/.ssh/ 生成的兩個密鑰: id_rsa(私鑰) 和 id_rsa.pub(公鑰)
私鑰(id_rsa)保存在本地主機,公鑰(id_rsa.pub)通過 ssh-copy-id root@192.168.1.200  會自動傳遞到對端B主機的~/.ssh/目錄下,並且自動重命名為 authorized_keys
登錄目標主機:  ssh  root@192.168.1.200    使用剛剛輸入的私鑰登錄
具體:

1、在本機生成密鑰對

使用ssh-keygen命令生成密鑰對:

ssh-keygen -t rsa #-t表示類型選項,這里采用rsa加密算法
然后根據提示一步步的按enter鍵即可(其中有一個提示是要求設置私鑰口令passphrase,不設置則為空,這里看心情吧,如果不放心私鑰的安全可以設置一下),執行結束以后會在 /home/當前用戶 目錄下生成一個 .ssh 文件夾,其中包含私鑰文件 id_rsa 和公鑰文件 id_rsa.pub。

2、將公鑰復制到遠程主機中

使用ssh-copy-id命令將公鑰復制到遠程主機。ssh-copy-id會將公鑰寫到遠程主機的 ~/ .ssh/authorized_key 文件中

ssh-copy-id ldz@192.168.0.1

點擊此處是一個網友遠程登錄谷歌雲的例子

四、SSH應用

1、可以利用 nohup + 需要運行的程序 使運行的程序在切斷ssh連接的時候仍然能夠繼續在遠程主機中運行。nohup即no hang up(不掛起)。

2、scap、put、get等跨主機傳輸文件

3、綁定本地端口

$ ssh -D 8080 user@host
SSH會建立一個socket,去監聽本地的8080端口。一旦有數據傳向8080端口,就自動把它轉移到SSH連接上面,發往遠程主機。可以想象,如果8080端口原來是一個不加密端口,現在將變成一個加密端口。
根據柚子皮的例子:

有時,綁定本地端口還不夠,還必須指定數據傳送的目標主機,從而形成點對點的"端口轉發"。為了區別后文的"遠程端口轉發",我們把這種情況稱為"本地端口轉發"(Local forwarding)。
假定host1是本地主機,host2是遠程主機。由於種種原因,這兩台主機之間無法連通。但是,另外還有一台host3,可以同時連通前面兩台主機。因此,很自然的想法就是,通過host3,將host1連上host2。
我們在host1執行下面的命令:
      $ ssh -L 2121:host2:21 host3
命令中的L參數一共接受三個值,分別是"本地端口:目標主機:目標主機端口",它們之間用冒號分隔。這條命令的意思,就是指定SSH綁定本地端口2121,然后指定host3將所有的數據,轉發到目標主機host2的21端口(假定host2運行FTP,默認端口為21)。
這樣一來,我們只要連接host1的2121端口,就等於連上了host2的21端口。
      $ ftp localhost:2121
"本地端口轉發"使得host1和host3之間仿佛形成一個數據傳輸的秘密隧道,因此又被稱為"SSH隧道"。
下面是一個比較有趣的例子。
      $ ssh -L 5900:localhost:5900 host3
它表示將本機的5900端口綁定host3的5900端口(這里的localhost指的是host3,因為目標主機是相對host3而言的)。
另一個例子是通過host3的端口轉發,ssh登錄host2。
      $ ssh -L 9001:host2:22 host3
這時,只要ssh登錄本機的9001端口,就相當於登錄host2了。
      $ ssh -p 9001 localhost

上面的-p參數表示指定登錄端口。

出錯處理:ssh: Could not resolve hostname 192.168.*.*:***: Name or service not known

解決:指定端口不能直接使用ip:端口號,使用-p參數來解決就可以了。
4、遠程端口轉發(來自柚子皮)

遠程端口轉發
既然"本地端口轉發"是指綁定本地端口的轉發,那么"遠程端口轉發"(remote forwarding)當然是指綁定遠程端口的轉發。
還是接着看上面那個例子,host1與host2之間無法連通,必須借助host3轉發。但是,特殊情況出現了,host3是一台內網機器,它可以連接外網的host1,但是反過來就不行,外網的host1連不上內網的host3。這時,"本地端口轉發"就不能用了,怎么辦?
解決辦法是,既然host3可以連host1,那么就從host3上建立與host1的SSH連接,然后在host1上使用這條連接就可以了。
我們在host3執行下面的命令:
      $ ssh -R 2121:host2:21 host1
R參數也是接受三個值,分別是"遠程主機端口:目標主機:目標主機端口"。這條命令的意思,就是讓host1監聽它自己的2121端口,然后將所有數據經由host3,轉發到host2的21端口。由於對於host3來說,host1是遠程主機,所以這種情況就被稱為"遠程端口綁定"。
綁定之后,我們在host1就可以連接host2了:
      $ ftp localhost:2121
這里必須指出,"遠程端口轉發"的前提條件是,host1和host3兩台主機都有sshD和ssh客戶端。


免責聲明!

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



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