ssh命令用於遠程登陸上Linux主機。vim
經常使用格式:ssh [-l login_name] [-p port] [user@]hostname
更詳細的能夠用ssh -h查看。安全
不指定用戶:服務器
ssh 192.168.0.11網絡
指定用戶:app
ssh -l root 192.168.0.11ssh
ssh root@192.168.0.11tcp
若是修改過ssh登陸端口的能夠:工具
ssh -p 12333 192.168.0.11spa
ssh -l root -p 12333 216.230.230.114操作系統
ssh -p 12333 root@216.230.230.114
另外修改配置文件/etc/ssh/sshd_config,能夠改ssh登陸端口和禁止root登陸。改端口能夠防止被端口掃描。
編輯配置文件:
vim /etc/ssh/sshd_config
找到#Port 22,去掉註釋,修改爲一個五位的端口:
Port 12333
找到#PermitRootLogin yes,去掉註釋,修改成:
PermitRootLogin no
重啓sshd服務:
service sshd restart
默認配置文件和SSH端口
/etc/ssh/sshd_config:OpenSSH服務器配置文件;
/etc/ssh/ssh_config:OpenSSH客戶端配置文件;
~/.ssh/:用戶SSH配置目錄;
~/.ssh/authorized_keys:用戶公鑰(RSA或DSA);
/etc/nologin:若是存在這個文件,sshd會拒絕除root用戶外的其它用戶登陸;
/etc/hosts.allow和/etc/hosts.deny:定義tcp-wrapper執行的訪問控制列表;
SSH默認端口:22
一、禁用OpenSSH服務器
工做站和筆記本電腦能夠不用OpenSSH服務器,若是你不須要提供SSH遠程登陸和文件傳輸功能,能夠禁用並刪除SSHD服務器,CentOS / RHEL / Fedora Linux用戶能夠使用下面的yum命令禁用和刪除openssh-server:
# chkconfig sshd off
# yum erase openssh-server
Debian / Ubuntu Linux用戶能夠使用下面的apt-get命令禁用和刪除openssh-server:
# apt-get remove openssh-server
你可能須要更新你的iptables腳本,移除ssh例外規則,在CentOS / RHEL / Fedora下,打開etc/sysconfig/iptables和/etc/sysconfig/ip6tables文件,刪掉與ssh相關的例外規則,而後使用下面的命令重啓iptables:
# service iptables restart
# service ip6tables restart
二、只使用SSH v2
打開sshd_config配置文件,若是沒有就增長下面這一行設置:Protocol 2
三、限制用戶的SSH訪問
假設咱們只要root,vivek和jerry用戶能經過SSH使用系統,向sshd_config配置文件中添加:AllowUsers root vivek jerry
另外,你還能夠容許全部用戶經過SSH登陸,但拒絕一部分用戶,這時就須要向sshd_config配置文件中添加:DenyUsers saroj anjali foo
四、配置空閒超時退出時間間隔
sshd_config配置文件,確保有以下的配置項:
ClientAliveInterval 300
ClientAliveCountMax 0
上面的例子設置的空閒超時時間間隔是300秒,即5分鐘,過了這個時間後,空閒用戶將被自動踢出出去(能夠理解爲退出登陸/註銷)。
五、禁用.rhosts文件
不要讀取用戶的~/.rhosts和~/.shosts文件,使用下面的設置更新sshd_config配置文件:
IgnoreRhosts yes
六、禁用基於主機的身份驗證
HostbasedAuthentication no
七、禁用root經過SSH登陸
PermitRootLogin no
八、啓用警告橫幅
Banner /etc/issue
八、防火牆SSH端口:22
更新/etc/sysconfig/iptables(Red Hat及基於Red Hat的系統)文件,只接受來自192.168.1.0/24和202.54.1.5/29的鏈接,配置以下:
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -s 202.54.1.5/29 -m state --state NEW -p tcp --dport 22 -
九、使用TCP Wrapper
TCP Wrapper是一個基於主機的網絡ACL系統,用於過濾到互聯網的網絡訪問,OpenSSH支持TCP Wrapper,只須要更新你的/etc/hosts.allow文件,下面的例子表示僅容許來自192.168.1.2 和172.16.23.12的ssh訪問:
192.168.1.2 172.16.23.12 |
關於如何在Linux / Mac OS X 和UNIX類操做系統上安裝和配置TCP Wrapper,請訪問http://www.cyberciti.biz/faq/tcp-wrappers-hosts-allow-deny-tutorial/。
十、禁用空密碼
你須要明確禁止密碼爲空的用戶遠程登陸,使用下面的設置更新sshd_config配置文件:
PermitEmptyPasswords no |
十一、使用日誌分析器
使用logwatch或logcheck讀取你的日誌,這些工具讓你更容易閱讀日誌內容,它們能夠遍歷給定時間範圍內的日誌,並生成明瞭的報告,請確保sshd_config配置文件中將LogLevel設置爲INFO或DEBUG了。
LogLevel INFO |
Other
# 開啓特權隔離
UsePrivilegeSeparation yes
# 防止使用不安全的home目錄和密鑰權限
StrictModes yes
# 開啓反向名稱檢查
VerifyReverseMapping yes
# 設置是否須要端口轉發
AllowTcpForwarding no
X11Forwarding no
# 指定是否容許密碼驗證,默認是yes
PasswordAuthentication no
最後警告你們,在重啓或從新載入修改以前,先使用下面的命令驗證一下sshd_config配置文件是否無誤:
# /usr/sbin/sshd -t |