FTP、Telnet 在網絡上經過明文傳輸口令和數據,這是很是不安全的,很容易受到其餘別有用心的人的利用,好比截獲你的口令,而後冒充你的數據。ssh經過對傳輸數據加密實現安全登陸,並且ssh對傳輸數據進行加密,減少了傳輸時延。雖然ssh有必定的安全措施保護數據傳輸過程免受干擾,但若是登陸的機器自己處於危險的環境中,也難免要受收到一些干擾,所以要對處於危險環境的IP作一些限制,也就是黑名單和白名單linux
環境:兩臺centos7服務器。192.168.92.133和192.168.92.137vim
目的:實現SSH登陸centos
centos7默認安裝了SSH,查看是否有SSH服務安全
rpm -qa|grep ssh
若是沒有安裝則安裝一下服務器
yum -y install openssh*
注意:若是操做過程當中出現了問題,能夠直接卸載,而後從新安裝網絡
yum remover -y openssh*
要確保登陸與被登錄的兩臺機器都開啓了SSH服務ssh
首先查看SSH狀態tcp
systemctl status sshd.service
若是沒有啓動則啓動SSH服務加密
systemctl start sshd.service
設置開機自啓centos7
systemctl enable sshd.service
1.不指定用戶,使用默認的root帳戶登陸
ssh 192.168.92.137
2.登陸時指定用戶
ssh –l root 192.168.92.137 或者 ssh root@192.168.92.137
3.SSH默認使用22端口登陸,若是被登錄機器更改了端口號,則須要使用指定的端口登陸
ssh –p 12580 192.168.92.137 ssh –l root –p 12580 192.168.92.137 ssh –p 12580 root@192.168.92.137
第一次登錄時會出現以下狀況,會問你是否繼續此鏈接,輸入yes,而後提示你輸入對方機器對應帳號的密碼,經過查看ip,發現已經登陸上去了
須要退出登陸的話,輸入exit,能夠查看IP地址驗證是否退出
每次登陸都須要輸入密碼挺麻煩的,若是有一種既安全又不用輸密碼的方式就方便許多了。這裏就須要使用到公鑰和私鑰的知識了。
簡單介紹一下。說到公鑰和私鑰,就要想到鎖和鑰匙的關係,公鑰至關於鎖,鎖在大門上,任何人均可以看見。私鑰至關於鑰匙,只有有鑰匙的人才能打開鎖。鎖和鑰匙至關於驗證身份的信物,只有用鑰匙打開鎖,我會認爲是本身人,讓你進來喝口茶,坐一坐。是否是整得還挺浪漫。
假如鎖鎖住的是寶物,而且還有人守護寶物,等待有緣人的到來。固然,守護者會去驗證你的身份,驗證身份的惟一標準就是是否能打開鎖。當年藏寶的人把鎖留下,確定還有鑰匙去開鎖。原本只有一把鑰匙,但爲了怕丟了又配了一把,因此他本人有鑰匙能夠隨時來看看,而另外一把鑰匙在他流浪江湖的時候給了一位有緣人,所以這位有緣人也能夠經過驗證打開鎖,進而驗證身份獲得寶物。
說明
兩臺服務器:192.168.92.133和192.168.92.137
系統:centos7
目的:133服務器免密登陸到137服務器root用戶
在133服務器上,生成公鑰和祕鑰
ssh-keygen
首先提示你生成祕鑰的路徑,若是不輸入路徑則默認生成在當前用戶家目錄下的.ssh目錄中,當前帳戶爲root,因此生成的祕鑰默認放在/root/.ssh/id_rsa
若是以前對應文件已經存在同名祕鑰文件,則會提示你是否覆蓋,若是該祕鑰已用於鏈接其餘服務器,則不要覆蓋。如下爲不存在同名文件,繼續提示你爲該祕鑰設置密碼,隨後確認密碼。設置密碼後,每次使用祕鑰都要輸入密碼。
這裏咱們沒有輸入密碼,直接兩個回車
生成以後查看.ssh隱藏文件,id_rsa爲私鑰文件,id_rsa.pub爲公鑰文件
由於咱們要鏈接137服務器,所以要把公鑰交給137服務器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.92.137
其中會提示你輸入137服務器的密碼,日後不會再讓你輸入
如今,就能夠經過SSH免密登陸到137服務器了
ssh root@192.168.92.137
咱們能夠經過查看.ssh目錄下的known_hosts文件查看已知的主機
cat /root/.ssh/know_hosts
因爲root用戶具備超級權限,隨意的使用root權限可能會帶來一些隱患,所以咱們須要禁止root用戶登陸,只開放普通用戶登陸,當須要root權限時,再切換到root用戶
在137服務器中修改sshd_config文件
vim /etc/ssh/sshd_config
找到PermitRootlogin yes,去掉#,把yes改成no
重啓SSH服務
systemctl restart sshd.service
從133服務器登陸到137服務器的root帳戶,能夠看到已被拒絕登陸
登陸普通用戶tc,可以正常登陸
爲了安全考慮,咱們還能夠修改默認的端口號,減少被黑客攻擊成功的風險
找到#Port 22,去掉註釋,修改爲一個五位的端口:Port 12333
重啓SSH服務
systemctl restart sshd.service
防火牆放行12233端口
firewall-cmd --permanent --add-port=12233/tcp
重啓防火牆
firewall-cmd --reload
查看端口放行狀況
firewall-cmd -–list-port
能夠看到已經可以經過修改後的端口登陸了
SSH經過設置黑名單或白名單作某些限制,好比禁止經過某帳號登陸,或者禁止從某ip登陸
1.限制或容許經過某帳號登陸
在137服務器/etc/ssh/sshd_config裏添加
DenyUsers tc
能夠看到如今沒法經過tc用戶登陸到137服務器,而root用戶能夠正常登陸
若是爲AllowUsers tc,則爲容許tc用戶登陸
AllowUsers tc
每次登陸還須要輸入用戶名和ip,感受比較麻煩,能夠經過配置SSH快捷登陸直接登陸到linux服務器。
編輯當前用戶家目錄下的.ssh/config文件,若是沒有則建立一個
touch config
vim config
添加以下信息
Host alias #自定義別名
HostName hostname #替換爲你的ssh服務器ip
Port port #ssh服務器端口,默認22
User user #ssh服務器用戶名
IdentityFile ~/.ssh/id_rsa #生成的公鑰文件對應的私鑰文件
保存並退出
能夠看到直接經過ssh aliyun登陸到135服務器了
2.容許經過某個ip登陸
vim /etc/hosts.allow
能夠編輯以下信息
sshd:192.168.92.133:allow #容許 192.168.0.1 這個 IP 地址 ssh 登陸 sshd:192.168.92.0/24:allow #容許 192.168.92.0/24 這段 IP 地址的用戶登陸 sshd:ALL # 容許所有的 ip經過ssh 登陸
也能夠限制從某ip登陸
vim /etc/hosts.deny
能夠編輯以下信息
sshd:192.168.92.135:deny #拒絕135這個IP地址經過ssh登陸 sshd:all:deny #拒絕所欲sshd遠程鏈接
這裏咱們對host.deny設置,禁止經過135服務器登陸到本機
重啓服務
systemctl restart sshd
發現已經不能經過135服務器登陸到本機
那麼,若是hosts.allow設置爲容許133服務器登陸,同時,hosts.deny爲拒絕133服務器登陸的時候,因爲hosts.allow文件的優先級高,所以此時能夠經過135服務器登陸到本機。