Ok, bạn đã làm mọi thứ rối tung lên.
Từ những gì tôi đã hiểu, bạn chỉ muốn sao chép một tập tin từ thanh sang foo :
[file] *bar* ------copy------> *foo*
Để làm điều đó, trước tiên bạn ssh
phải thanh sau đó scp
gửi đến foo :
*bar* -------ssh------> *foo* [file]
sau đó:
*foo* ----scp[file]---> *bar*
Nếu bạn đang làm như thế này, bạn đang làm nó không an toàn và sai . Tất cả bạn phải làm là trực tiếp gửi lại tệp cho bạn:
bob@foo$ scp bob@bar:/guest/buzz ~
nói cách khác:
*foo* <---scp[file]---- *bar*
Bây giờ có một vài vấn đề cần giải quyết
Làm thế nào để biết tập tin ở đâu?
a) Sử dụng SSH trong thiết bị đầu cuối khác
Chỉ cần mở một thiết bị đầu cuối thứ hai, SSH vào thanh , tìm tệp của bạn và sao chép / dán đường dẫn đến thiết bị đầu tiên.
b) Sử dụng SFTP
SFTP (không liên quan đến FTP cũng như FTPS dưới bất kỳ hình thức nào!) Được triển khai trong OpenSSH và có sẵn theo mặc định. Chỉ cần SFTP đến máy chủ và sử dụng các lệnh giống như FTP để tìm tệp của bạn và get
chúng.
c) Sử dụng GUI
Ví dụ, Filezilla hoặc Nautilus có thể duyệt các chia sẻ SFTP / SSH từ xa.
d) Thiết lập chứng chỉ
Khi bạn thiết lập kết nối chứng chỉ, bạn có thể thực hiện hoàn thành tab ở phía cục bộ cũng như ở phía xa! Ví dụ, với buzz
ví dụ của bạn , bạn có thể làm:
bob@foo$ scp bob@bar:/guest/[tab][tab]
và đợi một chút cho danh sách các tập tin có trong thư mục / remote /.
Làm cách nào để thiết lập SSH với chứng chỉ?
a) Nếu chưa được thực hiện, hãy tạo cặp khóa RSA cá nhân của bạn
Nếu bạn đã cài đặt ứng dụng khách OpenSSH, bạn có thể thực hiện bằng cách nhập
bob@foo$ ssh-keygen -t rsa
(xem hướng dẫn hoặc trực tuyến cho tất cả các tùy chọn có sẵn). Nó có thể yêu cầu bạn nhập mật khẩu. Đây không phải là mật khẩu tài khoản cục bộ của bạn mà là mật khẩu tùy chọn có thể được sử dụng để mã hóa khóa riêng mà bạn sắp tạo.
Trên thực tế, bạn sẽ tạo 2 tệp:
- /Users/[yourusername[/.ssh/id_rsa
- /Users/[yourusername[/.ssh/id_rsa.pub
Cái đầu tiên, * id_rsa * phải là riêng tư . Theo mặc định, ssh-keygen
sẽ làm mọi thứ có thể để tránh công khai (sử dụng quyền truy cập hệ thống tệp). Đó là lý do tại sao nó cũng sẽ yêu cầu bạn nhập mật khẩu (tùy chọn). Đừng quá hoang tưởng với điều đó, nhưng chỉ cần nhớ * id_rsa * == khóa cá nhân == riêng tư . Chìa khóa này không bao giờ nên rời khỏi máy tính của bạn.
Cái thứ hai là công khai. Nó đòi hỏi một lượng lớn năng lượng máy tính để lấy lại khóa riêng của bạn từ chứng chỉ công khai này (tôi thực sự muốn nói là HUUUUUUGE). Điều này là hoàn toàn an toàn để chia sẻ nó với cả thế giới. Ngay cả trong trường hợp rất khó xảy ra là NSA hoặc lượt thích thực sự muốn chi hàng triệu đô la để phá khóa công khai của bạn, macbook của bạn vẫn sẽ an toàn (hoặc không. Nghĩ về điều đó, nếu ai đó muốn chi tiêu nhiều như vậy, bạn sẽ tham gia rắc rối :)
Chứng chỉ công khai này thực sự là những gì bạn sẽ đặt trên thanh máy chủ từ xa .
b) Làm cách nào để đặt chứng chỉ công khai của tôi trên máy chủ?
Hai lựa chọn.
- Sử dụng
ssh-copy-id
nếu có sẵn : bob@foo$ ssh-copy-id bob@bar
. Làm xong.
Nếu không , hãy sao chép ~/.ssh/id_rsa.pub
vào thanh :
bob @ foo $ sftp ~ / .ssh / id_rsa.pub bob @ bar: pub_cert
(ở đây, bạn đã sao chép chứng chỉ công khai của mình id_rsa.pub
từ .ssh/
, trong ~
thư mục cá nhân của bạn sang thanh máy tính từ xa trong thư mục nhà của người dùng bob . Đây là mặc định. Cũng lưu ý rằng id_rsa.pub
đã được đổi tên thành pub_cert
trong quá trình. Tôi sftp
chỉ sử dụng để hiển thị cho bạn rằng nó có thể được sử dụng chính xác như scp
).
Bây giờ, chúng tôi sẽ sao chép chứng chỉ này đến đúng vị trí:
bob@foo$ ssh bob@bar
Bây giờ bạn đang ở trong thư mục cá nhân của bob trong thanh .
bob@bar$ cat pub_cert >> .ssh/known_hosts
(ở đây, bạn hiển thị nội dung của pub_cert với cat
Nhưng thay vì in nó ra màn hình, bạn chuyển hướng đầu ra này vào một tập tin:. .ssh/known_hosts
. Lưu ý rằng một chuyển hướng với >
có nghĩa là "thay thế nội dung của tập tin với dòng này", trong khi >>
phương tiện " nối thêm luồng ở cuối tệp hiện có ").
c) Kết quả?
Bây giờ bạn có thể scp
/ sftp
/ ssh
đến bar nhiều như bạn muốn mà không cần phải cung cấp một mật khẩu. Bạn cũng có thể tự động hoàn thành các đường dẫn cục bộ và từ xa bằng phím [tab].
d) Điều gì về bảo mật mac của tôi?
Với cách làm này, bạn thậm chí không cần máy chủ SSH đang chạy trên máy tính của mình. Chỉ một máy khách SSH ( scp
/ sftp
/ ssh
chương trình). Điều này là an toàn cho bạn ngay cả khi thanh bị xâm phạm.
e) Tôi đã làm gì chính xác với các khóa / chứng chỉ này?
Trước tiên, bạn tạo một vài tệp: khóa riêng và chứng chỉ chung. Bạn có thể làm rất nhiều thứ liên quan đến bảo mật và xác thực với chúng. Nhưng trong trường hợp của chúng tôi, với một chút đơn giản hóa, chúng được sử dụng theo cách này:
Khi bạn cố gắng kết nối với thanh , bạn sẽ quảng cáo rằng bạn đã có chứng chỉ mà bạn có thể sử dụng cho kết nối.
thanh sẽ kiểm tra các vị trí khác nhau trong hệ thống, bao gồm ~/.ssh/known_hosts
. Nó sẽ tìm thấy chứng chỉ mà bạn đã quảng cáo và sử dụng nó để gửi cho bạn dữ liệu được mã hóa.
Trên thực tế, chứng chỉ công cộng có thể mã hóa công cụ!
Bây giờ điều này là tuyệt vời, nhưng làm thế nào foo có thể hiểu điều đó? Sử dụng khóa riêng của bạn.
Khóa riêng có thể giải mã nội dung được mã hóa bằng chứng chỉ công khai tương ứng!
Đây là những gì được gọi là mã hóa bất đối xứng.
Sau đó, về cơ bản, máy chủ sẽ gửi mật khẩu phức tạp cho bạn được mã hóa bằng chứng chỉ công khai của bạn. Bạn sẽ nhận được nó, giải mã nó bằng khóa riêng của bạn và bắt đầu sử dụng nó để mã hóa dữ liệu với máy chủ theo cả hai cách.
Bây giờ, nếu bạn thực sự muốn làm mọi thứ theo cách của bạn và SCP trở lại foo thì sao?
Bạn chỉ đang yêu cầu rắc rối. Nhưng để giảm thiểu ảnh hưởng của sự thỏa hiệp có thể xảy ra, bạn có thể thiết lập một SFTP
máy chủ chỉ được chroot . scp
và ssh
sẽ không hoạt động nữa, nhưng sftp
, Filezilla và những thứ sẽ hoạt động.
ref: https://www.allthingsdigital.nl/2013/05/12/setting-up-an-sftp-only-account-with-openssh/