Trước đây, cách thức scp
hoạt động, khi được gọi ( ngây thơ ) để sao chép các tệp giữa các hệ thống từ xa, rất bất tiện: ví dụ: nếu bạn viết
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
scp
đầu tiên sẽ mở một ssh
phiên trên remote1, và sau đó nó sẽ chạy scp
từ đó đến remote2. Để làm việc này, bạn sẽ phải thiết lập thông tin xác thực ủy quyền cho remote2 trên remote1.
Thay vào đó, cách hiện đại để làm điều đó, ("hiện đại" bởi vì nó đã được thực hiện chỉ một vài năm trước đây và có lẽ không phải ai cũng có -3
khả năng scp
) có thể yêu cầu hai bước. Bước cần thiết đầu tiên là sử dụng ~/.ssh/config
để thiết lập tất cả các tùy chọn cho kết nối với cả remote1 và remote2, như sau:
Host remote1.example.org
Port 2222
IdentityFile /path/to/host1-id_rsa
Host remote2.example.org
Port 6969
IdentityFile /path/to/host2-id_rsa
Bằng cách này, có thể chuyển tất cả các tùy chọn cần thiết cho lệnh mà không có sự mơ hồ : ví dụ, nếu chúng ta đã nói trên CLI sử dụng cổng 2222 mà không có cấu hình ở trên, thì chúng ta sẽ không rõ liệu chúng ta đang đề cập đến remote1 hay remote2 , và tương tự như vậy đối với tệp chứa các khóa mật mã. Bằng cách này, CLI vẫn gọn gàng và đơn giản.
Thứ hai, sử dụng -3
tùy chọn, như sau:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
Các -3
tùy chọn chỉ thị scp
định tuyến lưu lượng thông qua máy tính mà trên đó các lệnh được ban hành, mặc dù nó là một bên thứ 3 để việc chuyển giao. Bằng cách này, thông tin ủy quyền phải chỉ nằm trên PC phát hành, bên thứ ba.