我可以在通過 SSH 傳輸網路流量時禁用互動式 shell 訪問嗎?
我正在考慮實施 SSH 隧道作為一種廉價的 VPN 解決方案,供外部使用者訪問僅面向 Intranet 的 Web 應用程序。
我目前正在使用安裝了 OpenSSH 的 Ubuntu Server 10.04.1 64 位。
我在 Windows 機器上使用 Putty 在本地埠上創建到我的 ssh 伺服器的隧道。
start putty -D 9999 mysshserver.com -N
然後我使用告訴 Firefox 在 localhost:9999 上使用 SOCKS 代理。
-N 標誌將從客戶端禁用互動式 shell。有沒有辦法在伺服器端做到這一點?
除了禁用root訪問,使用rsa密鑰認證,更改預設埠;為此,我應該遵循任何其他明顯的安全做法嗎?我的目標是簡單地能夠隧道網路流量。
四年後,這個答案值得更新。雖然最初我使用
authorized_keys
自己並且可能在某些特定情況下仍會使用它,但您也可以使用中央sshd_config
伺服器配置文件。sshd_config
proxy-only
您可以(針對您的特定案例)指定一個組,例如Match
單個使用者。在sshd_config
. 這是在全域設置和撤銷、重複或優化全域設置中給出的一些設置之後完成的。注意:中使用的一些語法/指令
sshd_config(5)
記錄man
在ssh_config(5)
. 特別要確保閱讀PATTERNS部分ssh_config(5)
。對於一個組,這意味著您的
Match
塊將像這樣開始:Match group proxy-only
您可以
Match
使用以下條件:User
、Group
、Host
、LocalAddress
和。要匹配多個標準,只需用逗號分隔標準模式對(如上)。LocalPort``Address``group proxy-only
在這樣的塊中,為了簡潔起見(但不必如此),傳統上會相應地縮進(但不必如此),然後您可以聲明要應用於使用者組的設置,而無需編輯
authorized_keys
該組成員的每個文件。
no-pty
設置 fromauthorized_keys
將由設置鏡像PermitTTY no
,並將command="/sbin/nologin"
變為ForceCommand /sbin/nologin
.此外,您還可以設置更多設置來滿足管理員的偏執,例如
chroot
- 將使用者放入他的主文件夾並最終得到如下內容:Match group proxy-only PermitTTY no ForceCommand /sbin/nologin ChrootDirectory %h # Optionally enable these by un-commenting the needed line # AllowTcpForwarding no # GatewayPorts yes # KbdInteractiveAuthentication no # PasswordAuthentication no # PubkeyAuthentication yes # PermitRootLogin no
(檢查自己是否需要或想要註釋掉的行並根據需要取消註釋)
這
%h
是一個由使用者主目錄替換的令牌(%u
將產生使用者名和%%
百分號)。我發現ChrootDirectory
限制我的sftp-only
使用者特別有用:Match group sftp-only X11Forwarding no AllowTcpForwarding no ChrootDirectory %h ForceCommand internal-sftp PasswordAuthentication no
請注意,只有某些指令可以在
Match
塊中使用。詳情請參閱man
頁面sshd_config(5)
(搜尋Match
)。授權密鑰
*注意:*此評論下方的部分是我的原始答案。同時-但這也取決於您的確切
sshd
版本的功能-在大多數情況下,我會採用上述方法。是的,你可以,就像你可以分配公鑰一樣細粒度。除了 ajdecon 推薦的 nologin 之外,我建議在 key 條目的前面設置以下內容
authorized_keys
:no-pty ssh-rsa ...
no pty 告訴伺服器端不應為該密鑰分配偽終端。
您還可以通過預先添加以下內容來強制執行特定鍵的 nologin 之類的操作:
command="/sbin/nologin",no-pty ssh-rsa ...