Trước đây, cách thức scphoạ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 sshphiên trên remote1, và sau đó nó sẽ chạy scptừ đó đế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ó -3khả 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 -3tùy chọn, như sau:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
Các -3tù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.