Pertanyaan SCP dengan dua port berbeda


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

server jarak jauh 1: IP = 67.12.21.133 & port = 6774

server jarak jauh 2: IP = 67.129.242.40 & port = 6774

scp -rp -P 6774 denny@67.12.21.133: /home/denny/testapp1.txt denny@67.129.242.40:

Ini memberikan kesalahan setelah memberikan kata sandi 67.12.21.133,

ssh: hubungkan ke host 67.129.242.40 port 22: Koneksi ditolak

kehilangan koneksi


13
2018-06-21 05:15


asal


Saya baru saja menguji itu juga, tetapi hanya berfungsi untuk host pertama. Yang kedua dikunci ke port 22. - gajdipajti


Jawaban:


Kamu dapat memakai ~/.ssh/config untuk 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

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

 ssh -p 6774 denny@67.12.21.133 scp -rp /home/denny/testapp1.txt denny@67.129.242.40:

dan kemudian ~ / .ssh / config dari host jarak jauh pertama (67.12.21.133) digunakan, bukan yang lokal.

Ketika Anda telah mengatur Anda ~/.ssh/config dengan benar, ini seharusnya berfungsi:

scp -rp3 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:

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

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

ssh -p 6774 denny@67.12.21.133 scp -rp -P 6774 /home/denny/testapp1.txt denny@67.129.242.40:

(Perhatikan kasus parameter port yang berbeda untuk ssh dan scp: ssh -p 6774 vs. 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


17
2018-06-21 14:10



'-3' tampaknya bukan pilihan yang valid - Saya hanya mendapatkan "scp: opsi ilegal - 3". - Rich Sedman


Saya tidak menemukan solusi 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. Ini meminta beberapa kali untuk dua kata sandi tetapi tidak menerima siapa pun. Mungkin jika Anda bertukar kunci ssh di antara host itu bekerja. Karena Anda tidak membutuhkan kata sandi.

Saya harap ini membantu? Thomas


8
2018-06-21 07:07





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

scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt -P 6774 denny@67.129.242.40:

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


5
2018-06-12 01:08



Itu tidak berhasil untukku. Sayang sekali, karena ini tampaknya solusi terbaik. Tautan rusak. - david.perez
Baru saja memperbarui tautan (meskipun saya lupa masuk terlebih dahulu ...). Akademi Linux memutuskan untuk merestrukturisasi situs mereka. Semoga itu 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 penerapan yang berbeda scp daripada yang dirujuk di sini. - Dan Hunsaker
Ini adalah Ubuntu 17.04. - Tom


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

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

scp -pr root@192.168.1.2:/path/to/files /destination/path

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


-2
2018-06-21 06:11



Anda belum membaca pertanyaannya. Dia punya masalah dengan port. Anda dapat mengatur port pertama, tetapi mur yang kedua dengan parameter -P - gajdipajti
@gajdipajti Saya tidak menentukan port di jawaban saya, dan menambahkannya sebagai catatan. Pengguna juga menyatakan bahwa dia menggunakan port yang sama. Lihatlah baris ke-2 & ke-3 :) - Mitch♦
Tapi itu tidak bekerja seperti itu, Anda akan mengatur yang pertama dengan -P tetapi yang kedua akan tetap 22. Coba saja. Saya sedang melakukan tes pada saat ini, tetapi masih tidak ada solusi yang berfungsi. - gajdipajti
Anda hanya akan menggunakan opsi -P jika Anda menggunakan port non standar. - Mitch♦