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 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: terhubung ke host 67.129.242.40 port 22: Koneksi ditolak

kehilangan koneksi


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 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 sebagai pengganti host lokal Anda.

Ketika Anda telah mengatur Anda ~/.ssh/configdengan benar, ini akan 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 -3opsi, yang mungkin akan mempercepat transfer.

Atau Anda dapat menggunakan trik yang digunakan 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:

(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


'-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


6

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

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

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).


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 root@192.168.1.2:/path/to/files /destination/path

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.