Làm thế nào để dẫn một tập tin từ xa đến thiết bị xuất chuẩn trên scp hoặc sftp?


28

Sử dụng ssh, thật dễ dàng để in nội dung của tệp bằng cách sử dụng

ssh host 'cat file.txt'

Khi ssh bị tắt và chỉ SFTP được bật, chạy lệnh trước đó sẽ báo lỗi sau:

Dịch vụ này chỉ cho phép kết nối sftp.

Để khắc phục sự cố này, tôi có thể tạo một tệp tạm thời bằng cách sử dụng scphoặc sshfs(như hiển thị bên dưới), nhưng điều đó trông thực sự xấu xí. Cách thích hợp để in nội dung của tệp từ xa khi SSH bị tắt là gì?

mkdir tmpdir
sshfs host: tmpdir
cat tmpdir/file.txt
fusermount -u tmpdir

# This does not work! scp -v host:file.txt . shows
# "Sink: This service allows sftp connections only."
scp host:file.txt .
cat file.txt
rm file.txt

Câu trả lời:


14

Curl có thể hiển thị các tập tin theo cách tương tự như con mèo. Không cần phải xóa tệp vì nó chỉ hiển thị đầu ra trừ khi bạn yêu cầu nó làm khác.

curl -u username:password sftp://hostname/path/to/file.txt

Nếu bạn sử dụng xác thực khóa công khai:

curl -u username: --key ~/.ssh/id_rsa --pubkey sftp://hostname/path/to/file.txt

Nếu bạn sử dụng các vị trí mặc định, sau đó --key--pubkeycó thể được bỏ qua:

curl -u username: sftp://hostname/path/to/file.txt

Tên người dùng cũng có thể là một phần của URL, vì vậy kết quả cuối cùng trông rất gần với lệnh ssh:

curl sftp://username@hostname/path/to/file.txt

Cảm ơn, chính xác những gì tôi đang tìm kiếm! Tôi đã chỉnh sửa câu trả lời của bạn để mở rộng xác thực khóa công khai, hóa ra cú pháp rất giống với cú pháp ssh / sshfs. Nếu lệnh curl không thành công với "curl: (51) Chứng chỉ ngang hàng SSL hoặc khóa từ xa SSH không ổn", chỉ cần thêm-k cờ ( --insecure).
Rob W

28

Đối với những người có thể chạy scp, bạn có thể làm điều này:

scp remotehost:/path/to/remote/file /dev/stdout

Cả hai phương pháp đều không hoạt động. Cái đầu tiên tương đương với một lớp lót sftp username@hostname:/path/to/file.txt /dev/stdoutvà kết quả là "Không thể ghi vào" / dev / stdout ": Tìm kiếm bất hợp pháp". Lệnh thứ hai không thành công và hiển thị lỗi được hiển thị ở cuối câu hỏi của tôi.
Rob W

Các hình thức SFTP hoạt động tốt cho tôi. Nó có thể phụ thuộc vào phiên bản phần mềm ssh bạn đang sử dụng. Về scp, tôi đã nói "nếu scp hoạt động". Bạn đã thiết lập trong câu hỏi của mình rằng máy chủ không cho phép bạn thực hiện scp, do đó, lệnh scp sẽ thất bại đối với bạn.
Kenster

ssh -Vcho OpenSSH_6.6.1p1, OpenSSL 1.0.1h 5 Jun 2014. scp thất bại vì nó sử dụng ssh dưới mui xe, và ssh bị vô hiệu hóa (như là một biện pháp an ninh, xem ví dụ serverfault.com/questions/354615/allow-sftp-but-disallow-ssh )
Rob W
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.