
複数のユーザーがリモートコンピュータで同じユーザーアカウントを共有する状況があります。私は自分のファイルを書くための「プライベート」ディレクトリを持っており、.zshrc
次の方法が欲しいです。
- SSH設定ファイル(たとえば
ControlMaster auto
)のディレクティブを使用して、リモートシステムでSSHセッションを開始します。 - このセッションは Z シェルを実行します。
- 私の「個人」ディレクトリで実行されます
.zshrc
(共有ユーザーのホームディレクトリではありません)。
そのようなsshセッションを開始するエイリアスや簡単な方法があれば良いでしょう(これが私がOpenSSHの設定ファイルの使用を考慮する理由です)。しかし、他のアイデアも開いています!
OpenSSH設定ファイルを使用していますか?
OpenSSHのssh_configを読みました。マニュアルページLocalCommand
ディレクティブを使用して実行するコマンドを指定できます。地元のサーバーに正常に接続した後。これにより、config
ファイルに実行するコマンドを知らせる方法がある可能性があります。離れてサーバーに接続しましたが、うまくいかないようです。
答え1
コマンドをリモートで実行する最も確実な方法は、SSHコマンドラインでコマンドを指定することです。 sshコマンドは常にリモートユーザーのシェルによって解釈されます。
ssh [email protected] '. ~/.profile; command_that_needs_environment_variables'
ssh -t [email protected] '. ~/.profile; exec zsh'
共有アカウントは一般的に良い考えではありません。可能であれば、各ユーザーに別々のアカウントを作成してください。共有アカウントへのアクセス権がない場合は、次のようにエイリアスを作成できます。
ssh -t [email protected] 'HOME=~/bob; . ~/.profile; exec zsh'
公開鍵認証を使用している場合(再度推奨)~/.ssh/authorized_keys
で確認できます。この回答もっと説明したい。~/.ssh/authorized_keys
サーバー上のメインラインを編集します(すべて1行にあります):
command="HOME=$HOME/bob;
if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then
eval \"$SSH_ORIGINAL_COMMAND\";
else exec \"$SHELL\"; fi" ssh-rsa AAAA…== [email protected]
答え2
サーバーに接続した後にリモートでコマンドを実行するには、.ssh/config ファイルに次のコードを追加します。
PermitLocalCommand yes
Host <server-ip-address>
LocalCommand *command*