SSH qua PowerShell


54

Có thể mở phiên SSH trong PowerShell không? Hiện tại tôi sử dụng PuTTY nhưng sẽ rất tuyệt nếu điều đó không bắt buộc.


1
Tôi biết nó không được hỗ trợ về mặt bản chất nhưng tôi cũng muốn thấy một giải pháp.
egorgry

5
Có gì sai khi chỉ gọi putty.exe (hoặc plink.exe) từ dòng lệnh?
Javier

4
Javier: Hãy bắt đầu với việc plink chỉ là một máy khách SSH và hoàn toàn thiếu các tính năng mô phỏng thiết bị đầu cuối.
grawity

+1, tôi muốn xem một giải pháp cho mình. Và phần lớn tôi ghét putty rất nhiều. (Người dùng SecureCRT)
Urda

1
Microsoft thông báo hỗ trợ trong tương lai cho SSH: blog.msdn.com/b/powershell/archive/2015/06/03/ mẹo
nw.

Câu trả lời:



9

Tôi đã viết một mô-đun để xử lý các phiên SSH từ PowerShell, dựa trên thư viện SSH.NET được tìm thấy trên CodePlex. Nó có New-SshSession để tạo kết nối (hỗ trợ nhiều mục tiêu sử dụng thông tin xác thực khác nhau) và sau đó bạn có thể sử dụng Invoke-SshCommand để chạy các lệnh chống lại bất kỳ số lượng máy chủ đích nào. Thậm chí còn có một Enter-SshSession có vỏ tương tác rất cơ bản.

Bài báo ở đây .

Joakim


6

Tải xuống OpenSSH cho Windows và chọn chỉ cài đặt máy khách trong khi cài đặt. Toàn bộ trình cài đặt bao gồm máy chủ ít hơn 3 MB và máy khách hoạt động tốt.


2
Có rất nhiều cảnh báo về dự án đó về trình cài đặt dậm chân biến System PATH trên Windows 7 & 8 - hãy cảnh giác!
Patrick M

2

Tôi vẫn đang đăng một câu trả lời cho câu hỏi này, vì tôi thấy câu trả lời được chấp nhận hoàn toàn không phù hợp với nhu cầu của tôi (Chỉ có giải pháp trả phí hoặc giải pháp khác không xử lý tốt thiết bị đầu cuối).

Vì vậy, giải pháp rõ ràng cho vấn đề này là cài đặt cygwin. Thực hiện cài đặt tối thiểu nếu bạn chỉ muốn ssh, nhưng vì powershell cung cấp mức độ tương thích cơ bản với các vỏ * nix (các lệnh cơ bản vẫn còn đó, "/" cho các thư mục, v.v.), nên thực sự có thể sử dụng công cụ cygwin bên trong Powershell.

Cygwin cài đặt tại đây


1
Cygwin? Đổ lỗi Cũng có thể kích hoạt VM ...
Urda

Làm sao vậy ssh là một cửa sổ được biên dịch thực thi. Nếu bạn không tương tác với các công cụ unix-y, sẽ không có gì ngạc nhiên khi bạn phải cài đặt một số lib cho điều đó.
raph.amiard

Xem câu trả lời của Ameer Deen, tôi nghĩ đó là giải pháp tốt nhất ở đây và hoạt động rất tốt.
Hosh Sadiq

1
@HoshSadiq Từ mô tả OpenSSH cho Windows: "Trình cài đặt để cài đặt tối thiểu môi trường Cygwin phù hợp để chạy máy chủ OpenSSH trên nền tảng Windows."
Douglas Ludlow


1

Nếu máy đích là một hộp Windows, thì bạn có thể sử dụng PowerShell Remote , thay vào đó.

Nó chắc chắn không giống như SSH. Có những ưu điểm (đưa các đối tượng trở lại qua dây!) Và nhược điểm (nếu mục tiêu là Linux thì sao?).




1

Một cách để có được một ứng dụng khách ssh bản địa rất tốt là cài đặt git từ GitHub ( https://windows.github.com/ ).

Nó tạo một lối tắt đến cửa sổ posh-git với tất cả các đường dẫn được đặt chính xác để sử dụng git trong powershell. Điều đó tự động đi kèm với nhị phân ssh và scp trong đường dẫn.

Tôi không chắc chắn việc triển khai nó là gì, nhưng nó có cảm giác giống như Linux, tức là nó không cảm thấy giống như .Net dựa trên hoặc sử dụng các lệnh Commandhell.

Nó đang chọn khóa riêng mà tôi đã cấu hình ở $ home / .ssh / ở định dạng openssh và có lẽ ai đó có thể xác nhận. Nó cảm thấy như nó là openssh.

Để làm cho nó tốt hơn nữa, tôi đã tích hợp nó vào hồ sơ quyền hạn thông thường của mình bằng cách thực hiện các thao tác sau trong hồ sơ $ của tôi. Điều đó có nghĩa là tôi không phải sử dụng phím tắt của github.

. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1") . (Resolve-Path "$env:LOCALAPPDATA\GitHub\PoshGit_*\profile.example.ps1")


1

Posh-SSH Là một mô-đun miễn phí từ Tạp chí Poswershell hoạt động cho Powershell 3.0 trở lên.

Nó có sẵn tại http://www.powershellmagazine.com/2014/07/03/poseh-ssh-open-source-ssh-powershell-module/

Tài liệu đầy đủ được cung cấp tại liên kết ở trên. Trong một kịch bản, bạn không thực sự muốn có một kết nối tương tác, vì vậy đó là hai bước. 1 tạo phiên. Gửi lệnh thứ 2.

$ServerConnection = New-SSHSession -KeyFile $keyLocation -ComputerName $sshComp -Credential $mycreds -AcceptKey

Phiên đầu tiên bạn tạo sẽ có chỉ số là 0.

Invoke-SSHCommand -Index 0 -Command "some command to run over ssh"

Cách tốt nhất là đặt việc tạo kết nối trong một lần thử và xác thực phiên tồn tại trước khi chạy lệnh. Điều này làm cho việc tương tác với các máy chủ Linux từ bên trong tập lệnh powershell hoạt động tốt.


-2

SSH và SFTP chắc chắn đại diện cho tiêu chuẩn công nghiệp trong ứng dụng truy cập từ xa an toàn. Thật tình cờ, việc thiết lập kết nối có thể thực sự nhanh chóng và dễ dàng. Đáng tiếc sự thật là có rất nhiều khả năng để lãng phí thời gian với việc khắc phục sự cố.

Đáng tiếc Windows không có phần mềm ssh client hoặc phần mềm deamon tiêu chuẩn trên tàu.

Điều này dẫn đến một sở thú của các triển khai kỳ quặc ít nhiều, mã nguồn mở, phần mềm miễn phí, phần mềm chia sẻ, v.v ... đôi khi không hoạt động.

Trong cửa sổ, đó là một thứ tiền. Microsoft chỉ không muốn nhiều người dùng kết nối dễ dàng với 1 máy tính. Họ muốn bán giải pháp của riêng họ. Vì vậy, họ không cung cấp ssl bản địa.

Cygwin là giải pháp tốt nhất hiện có.

putty / plink / woncp là phần mềm máy khách. Nó cũng ok cho kịch bản.

có các deamons ssh để tích hợp windows, nhưng các giải pháp ít nhiều không ổn định.

Cách ổn định nhất để có ssh deamon trên Windwos đang chạy là chạy nó trong Linux VM, có thể được nhận ra bằng một phân phối linux nhỏ.


4
Điều này không thực sự trả lời câu hỏi OP. Bạn có thể chỉnh sửa câu hỏi của mình để cho biết tại sao cygwin là một giải pháp cho câu hỏi do OP đặt ra không?
Tôi nói Phục hồi lại

OP không yêu cầu các giải pháp thay thế ngoài các giải pháp liên quan đến PowerShell.
cychoi
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.