4
無密碼的ssh登錄後,Linux中有沒有辦法檢索登錄的遠程用戶的身份?無密碼ssh登錄後檢查遠程用戶的身份?
我想在登錄腳本中採取一些不同的操作, 取決於從哪個遠程主機/用戶標識符執行ssh-login。
無密碼的ssh登錄後,Linux中有沒有辦法檢索登錄的遠程用戶的身份?無密碼ssh登錄後檢查遠程用戶的身份?
我想在登錄腳本中採取一些不同的操作, 取決於從哪個遠程主機/用戶標識符執行ssh-login。
除非您使用something like this answer - 即將用戶名作爲連接的一部分推送,否則不記錄原始系統的用戶名。遠程主機編碼在SSH_CLIENT
環境變量中,因此可以確定。
您可以嘗試使用finger
遠程系統,但這需要fingerd
才能運行,但這些日子並不常見。
你會使用特定的按鍵對於用戶來說,它可以在authorized_keys
文件的密鑰,如environment="NAME=value"
的起點設置爲一種-的判定連接遠程用戶選項有更好的運氣。例如
environment="REMOTEUSER=fred" ssh-rsa <blahblahkey> <comment>
如果你有在sshd的配置PermitUserEnvironment
一套使用在關鍵的environment
選項只會工作,否則在authorized_keys
行被忽略,你會被提示輸入密碼。
謝謝皮特。我嘗試了你的提示。 SSH_CLIENT變量已設置,但不幸的是,由於我們通過通用代理進行了隧道傳輸,因此該變量無用。 手指也因防火牆阻擋而無法使用。 環境=「NAME =價值」 - 看起來像系統管理員不允許我們的服務器...從我讀的,它默認情況下禁用?當我嘗試時,無密碼登錄停止,並且系統提示輸入密碼,因此看起來像服務器不這樣。 – Rop
是的,如果在服務器上沒有設置PermitUserEnvironment,則該鍵被忽略(被拒絕,因爲它是無效的)。唯一的另一個愚蠢的選擇是使用'command =「env REMOTE = user/bin/bash',但這只是一個瑣碎的選項,因爲它會阻止非交互式腳本。聽起來好像你有一個難以解決的問題,作爲代理隱藏起始IP地址,並且ssh默認情況下不要求遠程用戶名。 – Petesh
作爲一種解決方法,原則上看起來像這樣的東西可以工作:ssh user @ server'/ bin/bash - rcfile .customrc -l -i';然後它會在登錄時執行與.bashrc不同的文件,在那裏我可以進行自定義設置,但它不完美...在登錄時,我感到惱人的味精「bash:無法設置終端進程組(-1):無效的參數; bash:在這個shell中沒有作業控制「。另外,當我在bash中鍵入ctrl-C時,它會終止整個bash會話,然後退出到客戶端(我從windows/cygwin運行ssh)。修復這些問題? – Rop