如何在 ConEmu 中设置快捷方式以使用 Cygwin 自动打开新选项卡并自动启动给定的命令(例如,SSH)?
答案1
那么让我们从如何在新选项卡中启动 cygwin bash 开始。在我的示例中,我使用 msys-git 的 cygwin bash,因为这是我安装的:
我使用的命令是:
%systemroot%\SysWOW64\cmd.exe /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"
这就是一个交互式 shell。如果我想在 cygwin bash 内部运行 ls,我可以使用sh -exec
而不是sh --login -i
它看起来像这样:
C:\Users\JDearing>"C:\Program Files (x86)\Git\bin\sh.exe" -exec "/bin/ls c:\\"
+ /bin/ls c:
$Recycle.Bin VC_RED.MSI install.exe
BOOTSECT.BAK VC_RED.cab install.ini
Chocolatey Windows install.res.1028.dll
Documents and Settings boot install.res.1031.dll
EntLib41Src bootmgr install.res.1033.dll
Intel eula.1028.txt install.res.1036.dll
MSOCache eula.1031.txt install.res.1040.dll
PerfLogs eula.1033.txt install.res.1041.dll
Program Files eula.1036.txt install.res.1042.dll
Program Files (x86) eula.1040.txt install.res.2052.dll
ProgramData eula.1041.txt install.res.3082.dll
Recovery eula.1042.txt old_machine
RiskWorks eula.2052.txt pagefile.sys
SWSetup eula.3082.txt profiles
SafeBoot.fs globdata.ini sysinternals
SafeBoot.rsv hiberfil.sys vcredist.bmp
System Volume Information ilspy
Users inetpub
C:\Users\JDearing>
因此,你可以使用以下命令从 cygwin bash 启动 ssh:
%systemroot%\SysWOW64\cmd.exe /c ""C:\Program Files (x86)\Git\bin\sh.exe" -exec "/usr/bin/ssh[电子邮件保护]“”
您可能需要使用引号。我建议看看我的 conemu 任务以供参考。
答案2
这是通过 ConEmu 启动并运行 SSH 任务的最无缝方式。需要更多配置,但最终还是值得的。
生成 ssh 密钥
此处优秀答案的步骤:https://serverfault.com/questions/241588/how-to-automate-ssh-login-with-password。ssh-keygen 会问你几个问题。默认答案就可以了。如果你想使用空白密码,那也没问题。只要保证你的密钥文件安全就行。用你的凭证替换 id、server 和 password。
$ ssh-keygen -t rsa -b 2048
$ ssh-copy-id id@server password
$ ssh id@server
为ssh添加任务
- 打开 ConEmu 设置,转到启动->任务。
- 点击 +
- 给任务命名(我使用了“ssh”)
- 在命令、选项卡等的大文本框中放置一个新命令:
""C:\Program Files\Cmder\vendor\git-for-windows\bin\sh.exe" -exec "/usr/bin/ssh id@server""
- 将 id 和 server 替换为你自己的
(可选)将任务设置为默认任务
- 切换到父级设置窗口“启动”
- 在“启动选项”中选择“指定的命名任务”单选按钮
- 从下拉菜单中选择任务名称(我这里是 ssh)
- 保存设置
如果您所有操作都正确,您的控制台将启动并 ssh 到您选择的服务器,由于您使用的是密钥,因此不需要密码。
答案3
C:\cygwin64\bin\bash.exe --login -i -c "ssh myUser@myServer"
-c 将在您登录后自动执行以下字符串命令