Подключение к узлу по ssh

Сценарий 2

Лаконичный, работоспособный сценарий для работы PowerShell через SSH клиента. Нет лишних телодвижений, единственное, после установки PowerShell в Linux необходимо будет добавить один параметр в sshd конфиг.


Установка Windows SSH клиента

В этом сценарии будет использоваться менеджер пакетов Chocolately, установить его можно следующим образом:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

 Далее необходимо произвести несколько настроек:

$env:ChocolateyInstall = Convert-Path "$((Get-Command choco).Path)\..\.."
Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"

Установить SSH клиент:

choco install openssh

Обновить переменные окружения:

На стороне Linux

В данном случае, для разнообразия используется Ubuntu, здесь так-же необходимо установить PowerShell:

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo add-apt-repository universe
sudo apt-get install -y powershell

×Детали по установке для различных дистрбутивов смотри на официальном сайте.

Добавить в:

nano /etc/ssh/sshd_config

Параметр:

Subsystem powershell /usr/bin/pwsh -sshs -NoLogo -NoProfile

Перезапустить sshd:

systemctl restart sshd

Подключение по SSH

На стороне Windows используя командлет Enter-PSSession тестируем подключение:

Enter-PSSession -HostName xxx.xxx.xx.x -UserName user

Или можно создать сессию подключения:

$session = New-PSSession -HostName xxx.xxx.xxx.x -UserName user -SSHTransport

Далее использовать ее по назначению:

Enter-PSSession $session

Или вызвать команду:

Invoke-Command -Session $session -ScriptBlock { Get-Process } | Select-Object -First 5

Или скрипт:

Invoke-Command -Session $session -FilePath 'c:\test\get-linuxip.ps1'

Устранение ошибки A remote session might have ended.

Возникает в момент подключения, выглядит следующим образом:

Enter-PSSession : An error has occurred which PowerShell cannot handle. A remote session might have ended.

Решается добавлением в ручную переменной окружения ssh:

Доп. ссылки

  • PowerShell remoting over SSH
  • Installing PowerShell on Linux
  • PowerShell — ISE на стероидах
  • Узнать установленную версию PowerShell

Подключение по SSH из Linux

Обычно в дистрибутивах Linux клиент OpenSSH установлен по умолчанию и не требует предварительной настройки. Подключение выполняется из окна терминала с помощью команды ssh. В качестве аргументов указываем имя пользователя и IP-адрес удаленного сервера. На нашем тестовом сервере, который мы используем в данном примере, существует только одна учетная запись mihail, именно её и будем использовать для подключения.

При первом подключении необходимо подтвердить добавление публичного ключа сервера в локальную базу, отвечаем “yes”, после чего вводим пароль пользователя, от имени которого выполняется подключение. Если соединение прошло успешно, вы увидите, приглашение командной строки сервера. Теперь все вводимые команды будут выполняться непосредственно на удаленной машине.

Вход по SSH ключу для локальных администраторов Windows

В OpenSSH используются особые настройки доступа по ключам для пользователей с правами локального администратора Windows.

В первую очередь, вместо ключа authorized_keys в профиле пользователя нужно использовать файл с ключами C:\ProgramData\ssh\administrators_authorized_keys. Вам нужно добавить ваш ключ в этот текстовый файл (в целях безопасности права на этот файл должны быть только у группы Administrators и SYSTEM).

Чтобы использовать ключ authorized_keys из профиля пользователя, и не переносить данные открытого ключа в файл administrators_authorized_keys, вы можете закомментировать строку в файле конфигурации OpenSSH («C:\ProgramData\ssh\sshd_config«).


Закомментируйте строки:

#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Дополнительно в файле sshd_config вы можете разрешить вход по RSA ключам:

PubkeyAuthentication yes

И запретить доступ по паролю:

PasswordAuthentication no

После сохранения изменений в файле sshd_config не забудьте перезапустить службу sshd.

Еще один небольшой нюанс. В старых версиях OpenSSH нужно было предоставить права службе NT Service\sshd на чтение ключа authorized_keys.

Для этого нужно выполнить одно из следующих действий:

  • Установить модуль OpenSSHUtils: . Для изменения прав на файл нужно выполнить команду: ;
  • Измените NTFS права на файл с помощью модуля NTFSSecurity или icacls;
  • Либо вы можете в конфигурационном файле sshd_config отключить режим StrictModes. По умолчанию этот режим включен и запрещает аутентификацию по ключам, если закрытый и открытый ключ недостаточно защищены. Раскомментируйте строку , измените на .

Итак, вы настроили SSH аутентификацию в Windows по открытому RSA-ключу (сертификату). Теперь вы можете использовать такой способ аутентификации для безопасного доступа к удаленным северам, автоматического поднятия проброса портов в SSH туннеле, запуска скриптов и других задачах автоматизации.

OpenSSH for Cygwin Terminal

If you’re routinely using the standard SSH command on Linux, macOS, and other UNIX-like systems, Cygwin features SSH support.

If you’re new to SSH, you’ll probably want to use a graphical option like PuTTY. However, if you’re experienced with command line activity, you’ll find Cygwin’s OpenSSH implantation works as it does on other platforms.

Cygwin is a large installation package so you may prefer to install just OpenSSH.

To do this, run the downloaded installer and when you’re prompted to Select Packages, search for OpenSSH. Expand Net and in the New column, click Skip so it displays the version to download.

Click Next to proceed, review the packages to be installed, then Next again.

After the installation process finishes, launch Cygwin’s Terminal application from the Start menu. To start an SSH connection, use the same ssh command that you’d run on Linux and other UNIX-like operating systems.

While a good solution, Cygwin can be difficult to set up.

Download: Cygwin (Free)

Как пользоваться PuTTY

1. Интерфейс программы

Сразу же после запуска программы из меню пуск вы увидите графический интерфейс ее настройки. После подключения вы будете видеть только терминал, но настроить программу можно через удобный интерфейс.

Рассмотрим за что отвечают те или иные вкладки программы, чтобы вы ориентировались что и где искать. У нас есть четыре вкладки:

  • Session — отвечает за подключение удаленному серверу, тут мы вводим параметры подключения, порт, адрес, а также можем сохранить все настройки putty, чтобы не настраивать каждый раз заново.
  • Terminal — позволяет включать или отключать возможности терминала;
  • Window — настройка внешнего вида окна, цвет, шрифт, кодировка;
  • Connection — настройка параметров подключения, алгоритма шифрования, сжатия, ключей аутентификации, X11 и других параметров.

Каждая вкладка имеет несколько подразделов, но мы не будем сейчас их трогать, а перейдем сразу к практике и посмотрим как подключиться putty к удаленному узлу.

2. Подключение к удаленному компьютеру PuTTY

Чтобы подключиться к удаленному компьютеру по SSH перейдите на вкладку «Session», здесь, в поле «Host Name» необходимо прописать ip адрес или имя хоста, компьютера, к которому вы хотите подключиться, в поле порт — нужно указать порт, на котором запущен SSH сервер, по умолчанию используется порт 22:

Далее, нажмите кнопку «Open». После этого появится запрос на добавление ключа сервера в список доверенных ключей, нажмите «Да»:

Затем вам будет нужно ввести логин пользователя и пароль

Важно заметить, что скопировать логин или пароль у вас не получится, необходимо только вводить вручную:. Теперь авторизация прошла успешно, и вы можете выполнять нужные действия на сервере:


Теперь авторизация прошла успешно, и вы можете выполнять нужные действия на сервере:

3. Сохранение сессии PuTTY

Чтобы не вводить каждый раз ip и порт можно сохранить эти данные в виде сессии, для этого пропишите новое имя в поле «Saved Sessions», а затем нажмите кнопку «Save»:

Теперь вы сможете загрузить сохраненную сессию, нажав кнопку «Load».

После того как будет завершена настройка putty и все параметры будут выставлены правильно вы можете сохранить настройки и не вводить их несколько раз.

4. Имя пользователя по умолчанию

Вы можете не вводить имя пользователя каждый раз, для этого перейдите на влкадку «Connection», затем «Data» и в поле «Auto-login Username» пропишите имя пользователя, например, root:

Теперь подключение putty будет выполняться от имени этого пользователя.

5. Авторизация по ключу ssh в PuTTY

Чтобы не вводить каждый раз пароль можно настроить авторизацию по ключу. В Linux такая возможность используется очень широко потому что это удобно. Первым делом необходимо создать ключ. Для этого запустите утилиту PuTTYgen и установите переключатель в положение «SSH-2 RSA» нажмите «Generate»:

Обязательно ключ должен быть SSH-2 RSA, если в главном окне нет, выберите в меню «Key». Подвигайте мышкой, чтобы создать достаточное количество энтропии:

Ключ готов, затем, с помощью кнопок «Save Public Key» и «Save Private Key» сохраните оба ключа.

Далее, откройте PuTTY, перейдите на вкладку «Connection», затем «SSH», затем «Auth»:

Здесь необходимо нажать кнопку «Browse» и добавить недавно сохраненный приватный ключ:

Далее, возвращаемся на вкладку «Session», выбираем наше сохранение и нажимаем «Save» чтобы сохранить настройки. Осталось только отправить наш открытый ключ на сервер. Для этого авторизуйтесь на нем с помощью пароля и открытый ключ вставьте ключ в конец файла /root/.ssh/authorized_keys.

Ключ можно брать прямо из окна PuTTYgen «Public key for pasting» или из файла открытого ключа:

Все, теперь можно выходить и авторизоваться снова. На этот раз подключение по ssh putty будет выполняться с помощью нашего ключа. Не забывайте сохранять настройки сессии, чтобы не выбирать ключ каждый раз. Теперь вы знаете как пользоваться программой putty, рассмотрим еще передачу файлов.

5. Передача файлов через scp в PuTTY

Не все знают, но PuTTY позволяет передавать файлы через ssh также как это делает linux с помощью утилиты scp. Нажмите Win+R, затем пропишите cmd, чтобы запустить командную строку.

Синтаксис утилиты pcsp выглядит следующим образом:

pscp опции путь_файлу имя_пользователя@хост:/путь/к/файлу/на/удаленном/хосте

Например, мы можем отправить файл из текущей папки в папку пользователя /root/:

С помощью опции -P можно задать удаленный порт:

А опция load позволяет загрузить сохраенные настройки сессии PuTTY:

Теперь вы знаете как использовать putty для передачи файлов.

ZOC SSH Features in Detail

ZOC is based on OpenSSH and supports the latest key exchange and encryption methods that the SSH protocol (RFC 4253) has to offer.

Unlike OpenSSH, this ssh client is wrapped in a modern tabbed user interface with a powerful host directory, industrial strength emulations and scripting.

Below is an overview and explanation of some core SSH features of ZOC Terminal. We also have a whitepaper offering a more technical description of SSH.

Key Exchange

An especially difficult part of encrypted communication is the need to negotiate a shared secret (the key to use for encryption) over a public channel that could already be compromised.

The negotiation is performed through the so called Diffie-Hellman exchange or a variant thereof. ZOC supports all official diffie-hellman group exchanges, as well as the more modern ecdsa-sha2 and curve25519-sha256 protocols.

Authentication

Authenticating describes the process, where the user presents proof of who he is and the server deciding, if the user should be allowed access. The SSH protocol describes various methods that can be used for authentication.

Of those, ZOC supports password authentication, pukey exchange and keyboard-interactive challenge. Public-key exchange comes in various flavors. ZOC understands RSA, DSA, ECDSA and ED25519 keys. It is also possible to use hardware based key authentication (e.g. smart cards).

Encryption

Over time, the SSH protocol has seen a plethora of methods to be used to encrypt the communication (using shared secret was negotiated during the KEX phase as a cryptograhpic key). Some ciphers were phased out over time, especially after Edward Snowden revealed how powerful possible listeners like the NSA are, and new ones were introduced. ZOC supports the whole list, starting with aes256-ctr and going down to older ciphers like aes256-cbc or arcfour (these older ones may still be necessary to connect to older servers which have not been updated in a while).

Static Port-Forwarding

An important part of the secure shell protocol is a feature called port-forwarding. This feature allows the user to create a connection from the client computer to the server network, which can be used by other programs and where all the connection data is encrypted. This feature is sometimes called tunneling.

Dynamic Port-Forwarding

The standard port-forwarding feature requires the client to set up the tunnel source port and destination before making the connection. This means that there is limited flexibility and that for each possible destination, a separate ssh tunnel needs to be set up. With dynamic port forwarding however, the client sets up a listening port, but when a software connects to the port, it can select host and port it wants to connect to. The ssh client will then forward the connection request to the SSH server which initiates the connection to the final destination.

SSH Connection via Proxy

In some environments, end user computers are not allowed to access the outside internet directly. In those cases, connection and data exchange is made by way of a ssh proxy which handles the actual connection to the outside network (internet). There are various type of proxies, which mainly differ in how the ssh client requests a connection to the outside world. Most common types are SOCKS-4, SOCKS-5 and HTTP. ZOC supports connections through those types, as well as connections made through ssh-jumpservers.

SSH Agent Forwarding

When a user authenticates an SSH session using a public/private key pair, ZOC supports the SSH technique to provide the key for authentication in secondary ssh sessions (ssh connections to a third server, made from typing a ssh command in the remote shell in the initial connection). If all the servers allow authetication through this specific ssh key pair, it is not necessary to provide the passphrase again for secondary ssh connections.

X11 Forwarding

X11 is a communication protocol which allows a remote computer to run programs with a graphical user interface on a remote computer (normally, the server can show text only through a terminal client). SSH supports a way to tunnel this type of communication between ssh client and server, thus enabling the user to run an X11 command like xeyes on the remote shell and get the window for that displayed on the local computer.

DOWNLOAD ZOC for macOS

Configuration options and saved profiles

The initial configuration window contains a lot of options. Most of them are not needed in normal use.

Port

The port field specifies the TCP/IP port to connect. For SSH, this is the port on which the SSH server runs. Normally it can be left to 22. If for some reason you need to connect to a different port number, just change the value. Usually only developers would change this to a different value, but some enterprises are known to run SSH servers in non-standard ports or to run multiple SSH servers on the same server at different ports.

Connection type


The Connection type selection almost never needs to be touched. Just leave it as SSH. SSH is a secure, encrypted communications protocol designed to ensure your password and data are maximally protected.

Raw connections might be used for developers to connect a TCP/IP socket for testing (e.g., when developing a network application that listens on a TCP/IP port).

Telnet is an old legacy protocol that is almost never used, unless you manage equipment that is more than 10 years old. Telnet is not secure. Passwords are sent in the clear on the network. Attackers can easily eavesdrop on plaintext communications and steal user names and passwords. Rlogin is another legacy protocol with similar woes.

Serial refers to a serial port, another legacy communications mechanism for connecting computers to peripheral devices. Most PCs these days no longer have serial ports, but they are still sometimes used for controlling physical equipment, instrumentation, machinery, or communications devices. Another use for serial ports is debugging operating systems or embedded software.

Load, save, or delete a stored session

This section allows you to save your settings as named profiles. Just write the name of your new profile in the Saved Sessions box and click Save to create a new profile. The host name and your other settings are saved in the profile.

Saved profiles appear in the larger box below it. Initially it will contain just Default Settings. Profiles you save will be included there. Select a profile and click Load to use a previously saved profile. Select a profile and click Delete to delete a profile that is no longer needed.

Close window on exit

Finally, the Close window on exit setting specifies whether the terminal window should be automatically closed when the connection is terminated. There is rarely any need to change it from the default value of Only on clean exit.

Conclusion

If you are not sure which SSH client is to be chosen then PuTTY is a good solution as it is straightforward and doesn’t require an installation. Even after deleting, PuTTY will not affect your computer. One of the biggest cons of PuTTY is that it doesn’t provide the facility to open sessions in tabs.

Thus we have provided the list of best SSH clients and PuTTY alternatives. Terminals, mRemoteNG, SmarTTY, MobaXterm, KiTTY, and PuTTY can be the best SSH Clients for home server/ media center users.

Most of the solutions like KiTTY, Solar PuTTY, WinSCP, SmarTTY, Bitvise SSH Client, FileZilla, and mRemoteNG are free tools. MobaXterm, ZOC, and Xshell are commercial tools.

We hope this article will help you in selecting the right Windows SSH client.

Review Process

  • Time taken to research this article: 24 Hours
  • Total Tools researched online: 17 Tools
  • Top Tools shortlisted for review: 12 Tools

=>> Contact us to suggest a listing here.

Terminal window and login credentials

After the security alert, you should get a terminal window. By default, this is a black, very bland window. It should first ask for your user name and then password. After these, you should get a command line on the server.

You can then type into the terminal Window. You are now connected to the server, and anything you type in the Window is sent to the server. Server’s responses are displayed in the Window. You can run any text-based applications on the server using the window. The session terminates when you exit the command-line shell on the server (typically by typing ) to the command line or pressing . Alternatively, you can forcibly terminate the session by closing the terminal window.

Secure Shell for Google Chrome

Google provides an SSH client called Secure Shell App, that can be added to the Chrome browser. Just install the Secure Shell app from the Chrome Web store. Although it runs in the Chrome browser, it runs completely offline so you don’t need internet access to use it. So it works as well with devices on your local network as it does with remote servers.

Secure Shell App opens as a browser tab. Simply enter your credentials and the hostname (IP address) of the remote SSH server. You can also append additional SSH command-line arguments, if necessary.

As with other Chrome web apps, the Secure Shell App can open in a dedicated window to separate it from your main browser.

As Secure Shell is a Chrome web app, it’s also available for macOS, Linux, and even Chrome OS.

Download: Secure Shell App for Google Chrome

Latest news

2020-06-27 PuTTY 0.74 released

PuTTY 0.74, released today, is a bug-fix and security release. It fixes bugs in 0.73, including one possible vulnerability, and also adds a

to mitigate a minor information leak in SSH host key policy.

2019-09-29 PuTTY 0.73 released

PuTTY 0.73, released today, is a bug-fix release. It fixes a small number of bugs since 0.72, and a couple of them have potential security implications.

2019-07-20 PuTTY 0.72 released

PuTTY 0.72, released today, is a bug-fix release. It fixes a small number of further security issues found by the 2019 EU-funded HackerOne bug bounty, and a variety of other bugs introduced in 0.71.

2019-07-08 Bug bounty concluded

The EU-funded bug bounty programme is now closed. Many thanks to everybody who sent in reports!

2019-03-25 Bug bounty continues

This year’s EU-funded bug bounty programme is still running. It was originally scheduled to end on 7th March, but there was money left over in the budget. So while that money lasts, you still have a chance to earn some by finding vulnerabilities in PuTTY 0.71 or the development snapshots!

As before, vulnerabilities should be reported through the HackerOne web site in order to qualify for a bounty: if you send reports directly to the PuTTY team in the usual way, then we’ll still fix them, but we can’t provide money for them.

2019-03-16 PuTTY 0.71 released

PuTTY 0.71, released today, includes a large number of security fixes, many of which were found by the recent EU-funded HackerOne bug bounty. There are also other security enhancements (side-channel resistance), and a few new features.

It’s also the first release to be built for Windows on Arm.

2019-01-18 EU bug bounty for finding vulnerabilities in PuTTY

From now until 7th March, you can earn money by reporting security vulnerabilities in PuTTY!

HackerOne is running a bug bounty programme for PuTTY, funded by the European Union as part of the ‘Free and Open Source Software Audit’ project (EU-FOSSA 2). If you report a vulnerability through their web site, it may qualify for a bounty. (The exact amount will depend on how serious the problem is, and there’s also a bonus for providing a patch that fixes it.)

For more details, or if you have something to report, see the link above.

(Please note that HackerOne will only consider vulnerabilities reported to them. If you send a report directly to the PuTTY team in the usual way, then of course we’ll still fix it, but we can’t also arrange for you to get paid.)

2018-08-25 GPG key rollover

This week we’ve generated a fresh set of GPG keys for signing PuTTY release and snapshot builds. We will begin signing snapshots with the new snapshot key, and future releases with the new release key. The new master key is signed with the old master keys, of course. See the keys page for more information.

2017-07-08 PuTTY 0.70 released, containing security and bug fixes

PuTTY 0.70, released today, fixes further problems with Windows DLL hijacking, and also fixes a small number of bugs in 0.69, including broken printing support and Unicode keyboard input on Windows.


С этим читают