SSH 在登錄時掛起,將“cvs 伺服器”顯示為使用者的掛起程序
當我嘗試通過 ssh 登錄 CentOS 機器時,輸入密碼後它掛起。我可以通過控制台進入系統,當我執行時,
w
我可以看到正在為嘗試登錄的使用者執行“cvs 伺服器”。USER TTY FROM LOGIN IDLE PCPU WHAT root pts/1 systemname 11:37 1:14m 0.00s cvs server
在安全日誌中,它看起來像是一個有效的登錄:
Accept password for root from 172.0.0.17 port 53270 ssh2 pam_unix(sshd:session): session opened for user root by (uid=0)
它看起來像一個正常的登錄,但它永遠不會真正給我提示。我試過重啟 SSHD 服務,同樣的問題。這是一個生產盒,所以我有點猶豫要重新啟動它。我似乎在日誌文件中找不到任何可疑的內容。
當我執行
ssh -vvv
並嘗試連接時,它看起來也很好,但是在“請求接受通道..”之後我從來沒有收到登錄消息。這是 -vvv 結尾的粘貼:debug2: channel 1: request shell confirm 1 debug3: send packet: type 98 debug2: callback done debug2: channel 1: open confirm rwindow 0 rmax 32768 debug3: receive packet: type 99 debug2: channel_input_status_confirm: type 99 id 1 debug2: PTY allocation request accepted on channel 1 debug2: channel 1: rcvd adjust 2097152 debug3: receive packet: type 99 debug2: channel_input_status_confirm: type 99 id 1 debug2: shell request accepted on channel 1
另外,我通過網路防火牆查看它是否正在丟棄數據包或其他東西,沒有發生類似的事情。我也嘗試過其他一些系統,同樣的問題。
我以前從未見過這個,似乎無法找到關於這個確切問題的任何好資訊。任何幫助,非常感謝!
編輯:我在這裡只有一個 root 帳戶,沒有
.bashrc
或者.bash_profile
我可以在 root 或其他任何地方找到。但是,我確實看到了 ancvs.sh
和 acvs.csh
in/etc/profile.d/
。我確實看到了一個 for 循環,/etc/profile/
它正在尋找要/etc/profile.d/
在啟動時執行的腳本。以下是這些腳本的內容:
cvs.sh
# change default from rsh to ssh for cvs command export CVS_RSH=${CVS_RSH-ssh}
cvs.csh
# change default from rsh to ssh for cvs command if ( "$?CVS_RSH" == 0 ) setenv CVS_RSH ssh
我想也許它正在尋找,
cvs
但server
我在腳本目錄中沒有看到任何與伺服器有關的東西。還有其他地方我應該尋找嗎?我看過配置文件的所有正常地方,什麼都沒有。謝謝!
我找到了麻煩製造者。
sshd_config
裡面有一個舊條目ForceCommand cvs server
。一旦我調整了評論標記並重新啟動服務,我就可以正常登錄了。實際上,我最初瀏覽了這個文件,但沒有一點一點地檢查所有內容。本來可以為我節省一兩個小時來徹底完成任務……