ProxyJump
Mới trong OpenSSH 7.3:
A$ scp -oProxyJump=B thefile C:destination
(Đằng sau hậu trường, điều này chỉ sử dụng ProxyCommand và ssh -W
.)
ProxyCommand
Đã cập nhật để bao gồm -W từ các câu trả lời khác:
A$ scp -oProxyCommand="ssh -W %h:%p B" thefile C:destination
Nếu A đã cài đặt máy khách SSH rất cũ (không có -W
hỗ trợ) hoặc nếu B được cấu hình để không cho phép chuyển tiếp TCP (nhưng vẫn cho phép các lệnh shell), hãy sử dụng các lựa chọn thay thế:
A$ scp -oProxyCommand="ssh B socat stdio tcp:%h:%p" thefile C:destination
A$ scp -oProxyCommand="ssh B nc %h %p" thefile C:destination
Ống
A$ tar cf - thefile anotherfile | ssh B "ssh C \"cd destination && tar xvf -\""
A$ (echo thefile; echo anotherfile) | cpio -o | ssh B "ssh C \"cd destination && cpio -i\""
Đối với chỉ một tệp:
A$ ssh B "ssh C \"cd destination && cat > thefile\"" < thefile
"Đường hầm" qua B
A$ ssh -f -N -L 4567:C:22 B
(continues running in background)
A$ scp -P 4567 thefile localhost:destinationPath
Khi bạn đã hoàn tất, đừng quên giết ssh
quá trình đã bắt đầu trước đó (đã giảm xuống nền do -f -N
).
-f
Yêu cầu ssh đi đến nền ngay trước khi thực hiện lệnh. Điều này hữu ích nếu ssh sẽ yêu cầu mật khẩu hoặc cụm mật khẩu, nhưng người dùng muốn nó ở chế độ nền. Điều này ngụ ý -n.
-N
Không thực hiện một lệnh từ xa. Điều này rất hữu ích cho việc chuyển tiếp cổng.
Đảo ngược "đường hầm" qua B đến A
Không phải lúc nào cũng hoạt động:
A$ ssh -f -N -R 4567:localhost:22 B
(now you can reach A from B, by using localhost:4567)
B$ scp -P 4567 localhost:thefile C:destination
-R
Chỉ định rằng các kết nối đến cổng TCP hoặc ổ cắm Unix đã cho trên máy chủ (máy chủ) từ xa sẽ được chuyển tiếp đến máy chủ và cổng cụ thể hoặc ổ cắm Unix ở phía cục bộ.
A$ rsync <options> -e 'ssh B ssh' source C:destination