私はDebianLinuxを実行しています。コマンドプロンプトなしで、TCP転送用にSSH経由で接続できるユーザーアカウントが必要ですのみ。
たとえば、次のように機能します(リモートコンピューターから):
ssh -D1234 user@myhost
ただし、コマンドプロンプトは表示されません。
/ bin/falseや/ sbin/nologinのようなシェルを使用すると、ユーザーがログインすることさえできないため、制限が厳しすぎます。「exit」またはCtrl + Dコマンドのみを許可するシェルがその役割を果たします。
SFTPのみを許可するために同様のことが可能であることは知っていますが、TCP転送に相当するものが見つかりません。
ありがとう
-N
オプションを探しているようです。
-N Do not execute a remote command. This is useful
for just forwarding ports (protocol version 2 only).
そのようです:
ssh -D 8080 -N [email protected]
また、-f
オプションも興味深いかもしれません。
-f Requests ssh to go to background just before command execution.
This is useful if ssh is going to ask for passwords or passphrases,
but the user wants it in the background. This implies -n.
The recommended way to start X11 programs at a remote site is
with something like ssh -f Host xterm.
インバウンド接続で可能なことを制限する場合:
authorized_keys
ファイルにカスタムコマンドを設定します(sshキーを使用していると仮定します)使用するコマンド/シェルは、許可する内容によって異なります。例えば:
/bin/cat
は接続を開いたままにしますが、まったく何もしませんrssh
を使用すると、使用可能なアクションをカスタマイズできますbash
は制限付きモード(rbash
)で実行できます。これにより、構成済みのPATH
でのみコマンドを実行できます。絶対確実というわけではありませんが、何の価値もありません。これでうまくいくかどうかはわかりません。私は人々にフロントエンドで作業してもらいたいが、計算ノードでは許可されていないクラスターを持っています。すべての人がすべてのコンピューターにアカウントを持っていますが、ノードの/etc/profile
には次の行があります。
if test "$TERM" != "linux" && test "$USER" != "root" ;then
echo ""
echo -e "\\033[0;34m=======================================================================\\033[0;39m"
echo ""
echo -e "\\033[0;31m Login to this Host is allowed for administrator only.\\033[0;39m"
echo -e " Please use \\033[0;34mqueue\\033[0;39m to submit your jobs instead"
echo -e " or \\033[0;34m132.187.71.6\\033[0;39m or \\033[0;34m132.187.71.7\\033[0;39m to login into cluster front-end."
echo ""
echo -e "\\033[0;34m=======================================================================\\033[0;39m"
echo ""
exit
fi
$TERM
のある部分は、ログインが直接(つまりssh
)であるか、キューイングシステムを介して行われたかを確認します。最後のものは許可されます。特定のユーザーにログインを許可する場合は、ifステートメントに&& test "$USER" != "someuser"
を追加できます。