GNU/Linux >> Linux の 問題 >  >> Linux

ローカル シェル エイリアスを ssh セッションに動的にロードする

.bashrc を一時的にコピーできます 別の名前でリモートマシンに。たとえば、 .bashrc_temp を使用します :

[email protected]$ scp .bashrc [email protected]:~/.bashrc_temp

その後、リモート マシンにログインできます:

[email protected]$ ssh [email protected]

source ファイル .bashrc_temp :

[email protected]$ source ~/.bashrc_temp

.bashrc を使用できるようになりました そしてあなたの機能。作業が終了したら、リモート マシンの ~/.bashrc_temp ファイルを削除してログアウトできます。

ファイルのコピーとリモート マシンへのログインは、bash 関数を使用して実行できます。

# copy the .bashrc to the remote machine 
# and log into the remote machine.
# parameter $1: [email protected]
function s() {
  scp ~/.bashrc $1:~/.bashrc_temp
  ssh $1
}

更新 :

.bashrc をコピーすることも検討してください。 /tmp まで リモート マシンとソース /tmp/.bashrc_temp で .

アップデート 2 :

ssh -t を使用して、リモート マシンにログインできます。これにより、一時的な .bashrc が自動的に使用されます .更新された関数 s() :

function s() {
  scp ~/.bashrc $1:/tmp/.bashrc_temp
  ssh -t $1 "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

jens-na は優れた回答を提供しました。私は少し時間をかけて、少しうまく機能するように少しやり直しました.このようにして、ポート番号などの任意のパラメーターを SSH に渡すことができます。違いは、ssh を使用することです。 .bashrc をアップロードするコマンド scp の代わりにファイル 、異なるコマンド パラメータ名を使用します。

また、別のファイル .bashrc_remote をアップロードしていることにも気付くでしょう。 、すべてではなく、リモートサーバーでソースしたいものを正確に選択できるようにします

sshs() {
        ssh [email protected] "cat > /tmp/.bashrc_temp" < ~/.bashrc_remote
        ssh -t [email protected] "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

次のように実行します:

sshs [email protected]

名前 'sshs ' は「SSH ソース」用です。 ssh を使用 ソースを使用したくない場合は、sshs を使用します。

https://gist.github.com/jonahbron/5549848


探しているのは sshrc だと思います:https://github.com/Russell91/sshrc

<ブロック引用>

sshrc は ssh と同じように機能しますが、リモートでログインした後に ~/.sshrc もソースします。

$ echo "echo welcome" > ~/.sshrc
$ sshrc [email protected]
welcome

$ echo "alias ..='cd ..'" > ~/.sshrc
$ sshrc [email protected]
$ type ..
.. is aliased to `cd ..'

これを使用して、環境変数を設定し、関数を定義し、ログイン後のコマンドを実行できます。それはとても簡単で、サーバー上の他のユーザーに影響を与えることはありません - たとえ彼らが sshrc を使っていたとしても。より高度な構成については、読み続けてください。


Linux
  1. Linuxシェルのコマンドラインエイリアス

  2. Linuxで応答しないSSH接続を終了する方法は?

  3. Ssh – Ssh / scp / sftpユーザーをディレクトリに制限しますか?

  1. シェルがSshから制御されているかどうかを検出する方法は?

  2. インタラクティブシェルのセッションのプロセスとスクリプトのプロセス?

  3. Sshに接続したらシェルコマンドを続行しますか?

  1. プログラム的/動的にSshセッションポートフォワードを調整しますか?

  2. SSH セッションでクライアントの IP アドレスを見つける

  3. リモート SSH セッションからローカル クリップボードにデータを送信する方法