あるサーバーから別のサーバーにデータベースをコピーしようとしています。次のコマンドを試しましたが、SSHパスワード入力に関連しています。あるサーバーのパスワードを入力すると、他のサーバーに対して苦情が表示され、その逆も同様です。
ssh root@server1 mysqldump --databases db | ssh root@server2 mysql
ダンプを自分のコンピュータに一時的に保存して転送を完了しましたが、それを機能させる方法があるかどうか疑問に思いました。
ベストアンサー1
パスワードプロンプトは面倒です。 SSHをより便利にする方法は、認証にキーを使用し、ssh-agent
セッションごとに1回(オプションのタイムアウトを含む)キーを登録できるキーエージェント()を実行することです。その後、直接実行できます。
ssh root@server1 mysqldump --databases db | ssh root@server2 mysql
server1からserver2にログインできる場合は、2つのサーバー間でデータを直接転送する必要があります。
ssh root@server1 'mysqldump --databases db | ssh root@server2 mysql'
(またはserver2からserver1にログインできる場合はその逆)。同様に、認証用のSSHキーがあります。ローカル コンピュータで server1 へのアクセスを提供する SSH 秘密鍵と、server2 へのアクセスを提供する SSH 秘密鍵を登録します。プロキシ転送が有効になっていることを確認してください(AgentForwarding yes
)~/.ssh/config
。
パスワードを入力する必要がある場合は、最善の方法は最初に接続を確立してからデータを送信することです。新しいOpenSSHバージョンを使用すると、マスター接続を開いてスレーブ接続をルーティングできます。スレーブ接続には追加認証は必要ありません。あなたの~/.ssh/config
:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
両方のサーバーへの基本接続を開始します。
ssh -N -M root@server1 &
ssh -N -M root@server2 &
次に、次をコピーします。
ssh root@server1 mysqldump --databases db | ssh root@server2 mysql
その後、不要になった場合は、基本接続を終了できます。
ssh -O exit root@server1
ssh -O exit root@server2