私はちょうど大きな 'ollinuxクラスターのあるラボで働くために雇われました。私はMac/Windowsの人なので、nixコマンドラインを使用してナビゲートする方法をまだ理解しようとしています。これまでのところ、実際の問題は発生していませんが、新しいシステムの学習に関連して、約5000の異なる小さな厄介なことに遭遇しました。
これまでの最大の煩わしさはこれです:何らかの理由(セキュリティ、これらのサーバーのセットアップ方法について、私はまだ十分に知らないなど)で、SSH経由でキャンパス外からクラスターにログインするとき、最初にラボの机の上にある古いiMacにSSHで接続し、そこからクラスターにSSHで接続します。 SCPコマンドを使用して、自宅のMacからクラスターにファイルをコピーしています。
1つのターミナルウィンドウで最初に:
my-home-mac:scp file [email protected]:~/target
次に、別のターミナルウィンドウ(ラボのiMacにログインしているウィンドウ)で:
lab-iMac:scp file [email protected]:~/target
問題は、それを行うたびに、最初にファイルをラボのiMacにSCPで送信し(そして1つのパスワードを入力し)、次にファイルをそこからクラスターにSCPで送信する(そして別のパスワードを入力する)ことを余儀なくされることです。私は4ダースのファイルに分割されたこのCプログラムの開発を手伝おうとしているので、たくさんのファイルを移動していて、それは私をイライラさせています。
シェルスクリプトを学ぶ必要があると思いますが、それまでの間、起動して実行するために、いくつか質問があります。
ラボのiMacまたはクラスタのパスワードを常に入力する必要がないように、自宅のMacに端末を設定するにはどうすればよいですか?
中間体を経由せずに、自宅のMacからクラスターに直接SCP(またはその他のコマンド)ファイルを送信する方法はありますか?
中間サーバー(ラボiMac)を考慮に入れて、私を直接に接続しているように動作できるように、自宅のMacでFugu(またはGUIを備えた他のSSHクライアント)をセットアップする方法はありますか?集まる?
私は物理学者であり、ラボの他の全員は生物学者であり、これらすべてを設定した人はずっといなくなっているので、素晴らしいスタックオーバーフローコミュニティのすべての人に連絡します。ここで手を貸してください。ありがとう。
パスワードを入力する必要がないようにキーを設定できます。これについては前に説明したと思います( リモートマシンからSSH公開鍵を使用するにはどうすればよいですか? ;ヒントssh-keygen
)、そして私は常にOpenSSHコマンドラインクライアント(Macでは fink 、Linuxではローカルパッケージマネージャーをインストール)を使用しているので、ばかげた準グラフィカルクライアントには対応しません。
ssh
またはscp
を転送するためのレシピ元のマシン(私はorigと呼びます)には2つのコマンドラインが必要です。ゲートウェイはゲートと呼ばれ、宛先は宛先です。
最初のコマンドライン:
orig$ ssh -L 1111:dest.tld:22 gate.tld
これは、origで発信されるポート1111をdestで着信するポート22にリンクします。 gateを通るsshトンネルの方法。
ここで、この転送がしばらく必要になる場合は、セッションがタイムアウトにならないように設定します。 top
を使用します。
2番目のコマンドライン:
orig$ ssh -p 1111 username_on_dest@localhost
または
orig$ scp -P 1111 path/to/file/on/orig/filename username_on_dest@localhost:path/on/dest/new_filename
(ポート指定オプションは、ssh
とscp
... arghhhで大文字と小文字が異なることに注意してください!)これをいじるさまざまな方法についてドキュメントを読んでください。ただし、これが基本的なスキームです。セキュリティ上の理由でパブリックネットから遠ざけられているリソースを定期的に使用する場合に非常に便利です。
いたるところにパスワードを入力しないようにするには、SSHキーを使用します。それを行う方法については、たくさんのリソースがあります ここではS および 他の場所 。一言アドバイス:常にキーにパスフレーズを入れてください!
ゲートウェイMacを「バイパス」してラボマシンに直接アクセスするには、SSHのトンネリング機能を使用する必要があります。ホームMacとラボのゲートウェイMacの間にリンクを確立し、ローカルMacのポートをラボ内のマシンに転送します。次に、これらの特定のポートでローカルMacのマシンに接続すると、トラフィックは代わりにラボマシンに転送されます。
次の場合:
次のようなSSHコマンドラインを使用できます。
ssh -L 2001:LAB01:22 -L 2002:LAB02:22 2003:LABNN:22 joe@LABIMAC
トンネルを確立してから、ラボマシンに対して個別のSSHコマンドを実行します。
ssh -p 2001 joe@localhost
ssh -p 2002 joe@localhost
ssh -p 2003 joe@localhost
もちろん、ユーザー名はラボマシンごとに異なる可能性があります。これはすべて少し言葉になりますので、SSHでエイリアスを作成することができます 設定ファイル 以下を支援します:
Host LAB01
hostname localhost
port 2001
Host LAB02
hostname localhost
port 2002
Host LAB03
hostname localhost
port 2003
次に、ラボのMacへのトンネルが確立されたら、コマンドラインでポートとローカルホストをスキップして、より自然なことを行うことができます。
ssh joe@LAB01
構成ファイルを使用して、トンネルの確立を容易にすることもできます。
Host LABIMAC
LocalForward 2001 LAB01:22
LocalForward 2002 LAB02:22
LocalForward 2003 LABNN:22
LABIMACにSSHで接続するたびに、これらのローカルポート転送が自動的に確立されるようにします。
ssh joe@LABIMAC
(そして2番目のウィンドウで)
ssh joe@LAB01
autossh
を使用して、非アクティブな期間中に最初のトンネリング接続を開いたままにすることもできます。
1)すでに回答済み:SSHキー-自動ログイン-パスワードなし&より安全。
|||||||
2)rsyncでファイルを転送します:
(つまり)ポート22の使用:
rsync -av -e ssh/var/files/mysource/[email protected]:/ var/waytogo/example
別のポートを使用する(推奨)
rsync -av -e'ssh -p 34xx '/ var/files/mysource/[email protected]:/ var/waytogo/example
^^^
上記の例では、ターゲットサーバーに残っている余分なファイルは削除されません。
||||||||||||
3a)SSHクライアントは実際にはGUIを必要としません。PuTTYは、小さな学習曲線の後で簡単で楽しいものです。 :o)
3b)ログイン時の転送をスクリプト化できます。半自動の場合は、コマンドエイリアスを作成するだけで、1回または2回のキーストロークが可能になります。
注:エイリアスは非常に簡単に習得できます。Linuxでは/root/.bashrcを編集してください。
alias job='ssh -p 34xx [email protected]'
コマンドとして「job」と入力するだけで、他のマシンにログインします(SSHキーを使用)
2番目のコマンドを置き換えるもう1つの改善点は、トンネルをすでに設定している場合に、FileZillaをGUIとして使用してローカルマシンとリモートマシン間をドラッグすることです。
orig$ ssh -L 1111:dest.tld:22 gate.tld
これにより、ファイルをアップロードできるようになります。