Sử dụng SCP hoặc SFTP với tập tin cấu hình ssh của tôi?


44

Có lẽ google-foo của tôi đang làm tôi thất bại ở đây ... Tôi muốn kết nối và tải lên tệp kết xuất mysql qua thiết bị đầu cuối bằng SFTP hoặc SCP đến máy chủ từ xa bằng tệp cấu hình ssh của tôi. Theo tài liệu tôi đã tìm thấy, tôi sẽ có thể làm điều này:

sftp -F db.sql.gz webost@staging2.example.com /tmp

Tôi cũng đã mệt mỏi với bí danh trong cấu hình của mình:

sftp -F db.sql.gz myalias /tmp

Khi tôi thực hiện hai điều trên, tôi chỉ đơn giản là in ra các lệnh có thể, -Flà một trong số chúng.

Tôi đã có thể kết nối qua ssh bằng cách sử dụng phím tắt trong cấu hình cục bộ của mình, vì vậy tôi biết rằng nó hoạt động:

ssh myalias

** Lưu ý: Tôi đang kết nối bằng cặp khóa riêng / chung vì vậy tôi không bao giờ cần nhập mật khẩu. Cặp khóa có cụm mật khẩu được liên kết với nó nhưng OS X Keychain nhớ rằng lần đầu tiên tôi kết nối.

... Vì vậy tôi không chắc mình đang làm gì sai.

Câu trả lời:


46
  1. Từ văn bản trợ giúp: " ... [-F ssh_config] ..."

    Theo như trên, -Fmong đợi một đối số: đường dẫn đến tệp cấu hình OpenSSH ~/.ssh/confighoặc tương tự. Nhưng thay vào đó, bạn đang cung cấp cho nó một kết xuất SQL được nén.

    Vì đồng bằng ssh myaliasđã hoạt động, bạn thậm chí không cần -Ftùy chọn ở đây. Chỉ cần sftp myaliaskết nối với máy chủ.

  2. Tuy nhiên, sftpứng dụng khách OpenSSH không hỗ trợ tải lên các tệp như bạn đang cố gắng; nó chỉ có thể tải xuống các tệp (sử dụng cú pháp host:path) hoặc hoạt động ở chế độ tương tác. Để tải lên, bạn cần sử dụng chế độ tương tác ...

    $ sftp myalias
    sftp> cd /tmp
    sftp> put db.sql.gz
    

    ... hoặc scpcông cụ:

    scp db.sql.gz myalias:/tmp
    

    hoặc là

    scp db.sql.gz webost@staging2.example.com:/tmp
    

(sftp có chế độ hàng loạt trong đó nó có thể đọc các lệnh từ một tệp, bằng cách sử dụng -b, nhưng nó đơn giản hơn để sử dụng scpcho các lần tải lên.)

Cũng có các máy khách SFTP khác - lftp rất tốt cho việc sử dụng tương tác, trong khi curl có thể dễ dàng tự động hóa hơn. Để sao lưu và như vậy, bạn cũng có thể sử dụng rsync (chạy giao thức riêng nhưng vẫn nằm trong SSH).


wow điều này là hoàn hảo, làm việc tuyệt vời! Tôi chỉ đang làm quen với thiết bị đầu cuối vì vậy điều này sẽ thực sự có ích trong tương lai.
Daniel Englander

0

Sự cố gây ra bởi cấu hình ForwardAgent như bên dưới,

Host dockervm
   HostName x.x.x.x
   User root
   Preferredauthentications publickey
   ForwardAgent yes

Trường hợp của tôi, đó là do 'ForwardAgent' trên cấu hình ssh khiến scp bị treo. Sau khi nhận xét nó ra, làm việc cho tôi.

Ngoài ra, bạn có thể có một bản sao của tệp với dòng ForwardAgent đã nhận xét và sử dụng scp -F để làm cho nó hoạt động.

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.