我使用以下脚本(ssh模块)远程登录到linux服务器以启动进程。这会在命令行中提示我输入凭据。我试图通过Bamboo运行此脚本 那么,有没有一种方法可以在运行脚本时传递凭据,以便在运行脚本时不会提示我输入凭据?
PS C:\SVN_Working> .\linux-maint.ps1 -UserName user1 -Password pass123
$agents=("cagent01")
function Start-LinuxAgents([array]$agents){
if ($agents.length -gt 0){
$agents | %{
New-SshSession -ComputerName $_
$ExecStart = Invoke-SshCommand -InvokeOnAll -Quiet -Command './start'
Remove-SshSession -ComputerName $_
}
}
}
答案 0 :(得分:1)
SSH可以通过密码或公钥/私钥对验证用户。
您可以创建没有密码的私钥,将公钥添加到Linux服务器上的〜/ .ssh / authorized_keys,然后在脚本中通过New-SshSession创建会话时指定您的私钥。
请参阅http://www.powershelladmin.com/wiki/SSH_from_PowerShell_using_the_SSH.NET_library#New-SshSession
并生成公钥/私钥SSH密钥: https://help.github.com/articles/generating-ssh-keys/
*注意:如果您创建没有密码的SSH密钥,则意味着拥有该私钥的任何人都可以访问具有匹配公钥的任何系统。这是一个安全风险 - 您可能希望考虑限制允许用户在远程系统上运行的命令(也是SSH功能的一部分)