SCP dengan dua port berbeda

15

Bagaimana saya bisa menggunakan perintah scp untuk menyalin file antara dua server jarak jauh dari PC lokal saya?

server jauh 1: IP = 67.12.21.133 & port = 6774

server jauh 2: IP = 67.129.242.40 & port = 6774

scp -rp -P 6774 [email protected]: /home/denny/testapp1.txt [email protected]:

Ini memberikan kesalahan setelah memberikan kata sandi 67.12.21.133,

ssh: terhubung ke host 67.129.242.40 port 22: Koneksi ditolak

kehilangan koneksi

linuxspider
sumber
Saya hanya menguji itu juga, tetapi hanya berfungsi untuk host pertama. Yang kedua dikunci ke port 22.
gajdipajti

Jawaban:

19

Anda dapat menggunakan ~/.ssh/configuntuk menentukan port yang akan digunakan untuk host (dan untuk mengatur banyak hal bagus lainnya; periksa halaman manual man ssh_config):

# ~/.ssh/config

Host 67.12.21.133
  Port 6774

Host 67.129.242.40
  Port 6774

Saat melakukan ini, Anda harus menggunakan opsi -3untuk scp, yang menyalin file melalui mesin lokal Anda. Jika tidak, scp mengeluarkan perintah scp melalui ssh pada host pertama, jadi itu benar-benar berjalan

 ssh -p 6774 [email protected] scp -rp /home/denny/testapp1.txt [email protected]:

dan kemudian ~ / .ssh / config dari host jarak jauh pertama (67.12.21.133) digunakan sebagai pengganti host lokal Anda.

Ketika Anda telah mengatur Anda ~/.ssh/configdengan benar, ini akan berfungsi:

scp -rp3 [email protected]:/home/denny/testapp1.txt [email protected]:

Tentu saja, Anda juga dapat menyalin isi file ~ / .ssh / config ke host jarak jauh pertama Anda, dan kemudian Anda dapat menggunakan scp tanpa -3opsi, yang mungkin akan mempercepat transfer.

Atau Anda dapat menggunakan trik yang digunakan scp dan menggunakan baris perintah seperti itu:

ssh -p 6774 [email protected] scp -rp -P 6774 /home/denny/testapp1.txt [email protected]:

(Catat kasus yang berbeda dari parameter port untuk ssh dan scp: ssh -p 6774vs. scp -P 6774)

PS: Saya mendapat informasi ini dari bugzilla OpenSSH tempat saya memasukkan ini sebagai bug: https://bugzilla.mindrot.org/show_bug.cgi?id=2020

daniel kullmann
sumber
'-3' tampaknya bukan opsi yang valid - saya hanya mendapatkan "scp: illegal option - 3".
Rich Sedman
8

Saya tidak menemukan solusi yang mudah tetapi Anda dapat mencoba menggunakan sshfs dengan cara berikut:

mkdir /tmp/h1
mkdir /tmp/h2

sshfs -p 6774 user1@host1:/public /tmp/h1
sshfs -p 2211 user2@host2:/data/src /tmp/h2

cp /tmp/h1/files.* /tmp/h2

fusermount -u /tmp/h1
fusermount -u /tmp/h2

Cara lain bisa menggunakan ssh (sebenarnya tidak berhasil diuji):

ssh user1@host1 "cat /public/file.bin" | ssh user2@host2 "cat >/data/file.bin"

Saat ini saya tidak menemukan cara yang tepat untuk memasukkan dua kata sandi. Ia meminta beberapa kali untuk dua kata sandi tetapi tidak menerima siapa pun. Mungkin jika Anda bertukar kunci ssh antara host yang berfungsi. Karena Anda daripada tidak memerlukan kata sandi.

Saya harap ini membantu? Thomas

tpf
sumber
6

Menurut halaman ini di blog Linux Academy, Anda hanya perlu menggunakan -P 6774opsi tepat sebelum jalur jarak jauh kedua:

scp -rp -P 6774 [email protected]:/home/denny/testapp1.txt -P 6774 [email protected]:

Setiap penggunaan -Pbendera hanya berlaku untuk lokasi berikutnya pada baris perintah, bukan seluruh perintah. Lokasi mana pun yang tidak memiliki di -Pantara itu dan jalur sebelumnya (atau nama perintah [ scp]) default ke port standar (22).

Dan Hunsaker
sumber
Itu tidak bekerja untuk saya. Sayang sekali, karena ini sepertinya solusi terbaik. Tautan rusak.
david.perez
1
Baru saja memperbarui tautan (meskipun saya lupa masuk dulu ...). Linux Academy memutuskan untuk merestrukturisasi situs mereka. Semoga itu bisa membantu, beberapa!
Dan Hunsaker
Kalau saja ini berhasil. Tapi saya mengerti -P: No such file or directory.
Tom
@Tom - Sistem apa yang Anda jalankan ini? Anda mungkin memiliki implementasi berbeda dari scpyang direferensikan di sini.
Dan Hunsaker
Ini adalah Ubuntu 17.04.
Tom
-2

Jika Anda perlu mentransfer data dari satu server ke server lain, gunakan perintah SCP. Untuk melakukannya

Cukup tekan Ctrl+ Alt+ Tdi keyboard Anda untuk membuka Terminal. Ketika terbuka, jalankan perintah di bawah ini.

scp -pr [email protected]:/path/to/files /destination/path

Catatan: Parameter -P dapat digunakan jika Anda ingin menyebutkan nomor port.

Mitch
sumber
2
Anda belum membaca pertanyaannya. Dia memiliki masalah dengan port. Anda dapat mengatur port pertama, tetapi kacang kedua dengan parameter -P
gajdipajti
@gajdipajti Saya tidak menentukan port dalam jawaban saya, dan menambahkannya sebagai catatan. Pengguna juga menyatakan bahwa ia menggunakan port yang sama. Lihatlah Q. Baris 2 & 3 :)
Mitch
2
Tetapi tidak berfungsi seperti itu, Anda akan mengatur yang pertama dengan -P tetapi yang kedua akan tetap 22. Cobalah saja. Saya sedang melakukan tes saat ini, tetapi masih belum ada solusi yang berhasil.
gajdipajti
Anda hanya akan menggunakan opsi -P jika Anda menggunakan port non-standar.
Mitch