公網(wǎng)機器存在被攻擊的風(fēng)險,經(jīng)常會出現(xiàn)ssh登錄的時候炫欺,由于密碼輸錯次數(shù)過多而被鎖住無法登錄的情況眠副。原因是公網(wǎng)IP被攻擊,不斷嘗試ssh登錄竣稽,導(dǎo)致密碼輸錯次數(shù)過多囱怕。
規(guī)避方法有1. 修改默認(rèn)端口號為非22端口, 2. 關(guān)閉密碼登錄功能毫别,3. 配置防火墻娃弓,只允許指定IP的機器訪問。此處介紹關(guān)閉密碼登錄岛宦,使用密鑰登錄方法台丛。
基礎(chǔ)操作
- 在客戶端生成密鑰對
ssh-keygen
,之后一直按回車即可砾肺。 - 將本地密鑰對的公鑰上傳到服務(wù)器挽霉。
-
ssh-copy-id -i ~/.ssh/id_rsd.pub root@IP
。需要輸入服務(wù)器的密碼变汪。如果ssh默認(rèn)端口不是22侠坎,需要加-p 端口號
指定端口。 - 或者手動復(fù)制
~/.ssh/id_rsd.pub
中的內(nèi)容到服務(wù)器的~/.ssh/authorized_keys
文件中裙盾。
- 直接免密登錄实胸。
ssh root@IP
》伲可以用-p 端口號
庐完、-i key_file
分別指定端口號和密鑰文件。 - 關(guān)閉密碼登錄徘熔。修改
/etc/ssh/sshd_config
文件门躯,將PasswordAuthentication yes
改為no
,PubkeyAuthentication yes
改為yes
(如果為no的話)酷师,然后重啟sshd服務(wù)systemctl restart sshd
即可讶凉。
注意:私鑰文件的權(quán)限必須是600。
多環(huán)境配置
如果我們的服務(wù)器數(shù)量較多窒升,每次要登錄不同環(huán)境缀遍,且每個環(huán)境使用的密鑰對不一致,則饱须,可以通過~/.ssh/config
文件來對環(huán)境進行區(qū)分。
Host alias # 別名台谊,之后可以通過ssh alias來直接登錄
User user # 用戶名
HostName IP # 服務(wù)端IP
Port port # 端口號蓉媳,可省略譬挚,默認(rèn)22
IdentityFile /xxx/your_key # 密鑰文件,可省略酪呻,默認(rèn)~/.ssh/id_rsd
ServerAliveInterval 360 # 會話保持時間减宣,單位秒,可省略
跳板機
有時候玩荠,我們的目標(biāo)機器不能直接連接漆腌,需要先登錄跳板機然后在跳板機中登錄目標(biāo)機器〗赘裕可以通過如下配置闷尿,然后ssh mubiaoji
直接連接目標(biāo)機器。
Host tiaoban
Hostname 跳板機的ip
Port 跳板機的端口(如果是非22的需要填寫)
User root(如果非root,換成跳板機的用戶)
Host mubiaoji
Hostname 目標(biāo)機的IP
Port 目標(biāo)機的端口(如果是非22的需要填寫)
User root(如果非root,換成目標(biāo)機的用戶)
ProxyCommand ssh -q -x -W %h:%p tiaoban
ProxyCommand用來指定連接到服務(wù)器的命令. 其可以是任何的命令,只要能從其標(biāo)準(zhǔn)輸入讀入數(shù)據(jù),然后寫出到標(biāo)準(zhǔn)輸出即可女坑。這條命令需要連接到sshd服務(wù)器上填具。
在不使用ProxyCommand的情況下,ssh會自己建立到目標(biāo)機器22端口的連接.使用了ProxyCommand,那么使用指定命令來建立到目標(biāo)機的連接,ssh直接使用已經(jīng)建立的連接。
-W host:port 將client過來的標(biāo)準(zhǔn)輸入和輸出forward到host和port指定的地方.
這兒的%h表示要連接的目標(biāo)機,也就是Hostname指定的ip或者主機名,%p表示要連接到目標(biāo)機的端口.這兒可以直接寫死固定值,但是使用%h和%p可以保證在Hostname和Port變化的情況下ProxyCommand這行不用跟著變化.
其他
- 有些機器設(shè)置了禁止root用戶登錄功能匆骗,開啟方式為修改
/etc/ssh/sshd_config
文件中的PermitRootLogin no
為yes
劳景。 - scp命令,可以通過
scp -i you_key_file xxx root@IP:/xxxx
來拷貝碉就。 - 配置了免密登陸后盟广,存在問題需要用密碼登錄,可以用下面的命令
ssh -o PreferredAuthentications=password xxx@xxx.xxx.xxx.xxx
瓮钥,當(dāng)然如果你服務(wù)端關(guān)閉了密碼登錄這條無效衡蚂。