У меня два сервера:
SVR1 (Windows Server 2008) в локальной сети - часть домена
SVR2 (Windows Server 2008) в DMZ - рабочая группа
Мне нужно получить доступ к SVR2 из SVR1 через пакет командной строки - скопируйте некоторые файлы и выполните команду sc для управления службами на SVR2. Этот пакет запланирован, поэтому мне нужно получить доступ к SVR2 без ввода учетных данных.
Единственная известная мне возможность - иметь одно и то же имя пользователя и пароль на обоих серверах, но это не так изящно и представляет собой потенциальный риск.
Как лучше всего решить мою проблему? Лучше всего сделать это без стороннего программного обеспечения.
Поскольку SVR1 и SVR2 не являются частью одного домена AD, вам нужно будет хранить учетные данные для SVR2 где-нибудь на SVR1, чтобы ваш автоматический скрипт мог получить доступ.
Используя WinRM и достаточно обновленный Powershell, Powershell Remoting позволит вам установить соединение от SVR1 к SVR2 и делать все, что вы можете придумать в командной строке, в автоматическом режиме.
Вы можете сохранить пароль в хранилище учетных данных Windows с помощью Powershell, и ваш сценарий может получить доступ к учетным данным из хранилища учетных данных:
https://gallery.technet.microsoft.com/scriptcenter/How-to-add-credentials-to-c8e9bd5f
Я бы порекомендовал это как немного лучший способ хранения учетных данных. Старый классический способ хранения учетных данных заключался в следующем:
read-host -assecurestring | convertfrom-securestring | out-file operationspassword.txt
Затем в вашем скрипте «расшифруйте» пароль следующим образом:
$pass = Get-Content operationspassword.txt | convertto-securestring
$creds = New-Object -Typename System.Management.Automation.PSCredential -argumentlist "SRV2\admin",$pass
«Зашифрованные» кредиты можно расшифровать только той же учетной записью и на том же компьютере, где они были изначально зашифрованы, поэтому вы не можете просто украсть текстовое представление SecureString и использовать его где-нибудь еще. Но хранить кредиты таким образом по-прежнему непрофессионально, и я вообще не советую это делать.
Также не забудьте изменить свой список Powershell TrustedHosts, чтобы разрешить подключения к «ненадежному» компьютеру ... вы должны сделать это, потому что вы не используете Kerberos или SSL.
Это напоминает мне ... используйте SSL для подключений WinRM для большей безопасности: http://support.microsoft.com/kb/2019527
Порты Windows 2008 WinRM: 80 (HTTP) и 443 (HTTPS).
Вскоре Microsoft поняла, что эти порты вроде как уже используются, и поэтому:
Порты WinRM Windows 2008 R2 и выше - 5985 (HTTP) и 5986 (HTTPS).