我经常需要登录远程服务器并执行各种工作。我正在使用我的Mac,每次我都必须输入一个长命令才能做到这一点。
ssh -i ~/key.pem ubuntu@255.255.255.255
我想知道无需每天输入命令即可登录远程服务器的最简单方法是什么。
也欢迎方便的苹果应用程序
更新:
1>感谢马特·布莱恩特的回答。我通过将 ~/.ssh/config(默认不存在)修改为
Host <ShortName>
User <UserName>
HostName <HostIP>
IdentityFile <KeyPath>
然后我可以键入以下命令以避免输入主机的全名和密钥的完整路径:
ssh <ShortName>
2> 如果没有 pem 密钥,任何人都知道如何存储 pem 密钥或避免输入密码?
使用 ~/.ssh/config 文件。 尝试向其添加以下内容:
Host server
User ubuntu
HostName 255.255.255.255
这将允许您使用 ssh -i ~/key.pem server
登录。 如果您查找 ssh 配置,还有许多其他设置可以让您简化和增强您的 ssh 体验。
嗨 B 先生 W 是的,我将发布一个期望脚本,因为这出现了很多:
E2A 这些说明适用于 linux在 mac 上有期望 https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/expect.1.html这可能意味着弄乱脚本以满足 mac 的标准,期望我对此没有足够的了解,但原则上看过以下过程应该可以工作
您对 ssh-copy-id 或脚本的哪位感兴趣?
要启动脚本,您需要
sudo-apt-get install expect or
sudo yum install expect
安装后
这是一个典型的脚本:
#!/usr/bin/expect -f
set force_conservative 1
if {$force_conservative} {
set send_slow {1 .001}
proc send {ignore arg} {
sleep .001
exp_send -s -- $arg
}
}
;# Validate user input - make sure all fields required are given
if {$argc >= 1} {
;# Setting password
set user "MYUSER";
set supass "MYPASSWORD"
set host [lindex $argv 0]
# set command1 [lindex $argv 2]
set prompt "(:|#|%|>|\$|% |# |> |\$ )"
set prompt1 "(>)"
set timeout -1
;###############################################################
;#connect to specified host given by addstaff or globalstaff.
spawn ssh $user@$host
expect {
"*word:*" {}
"*(yes/no)?*" {
send - "yesr"
expect "*word:" { }
}
}
send - "$supassr"
expect eof exit -re $prompt
send - "sudo bashr"
expect {
"*word:*" {
send "$supassr"
expect eof exit -re $prompt
}
"*" {
expect eof exit -re $prompt
}
}
send - "whoamir"
expect eof exit -re $prompt
interact
;#send - "$commandr"
;# expect eof exit -re $prompt
;#Logout of current ssh session
;#send - "exitr"
;#expect eof exit -re $prompt
;#send - "exitr"
;#expect eof exit -re $prompt
} else {
send - "echo Sorry require user host command nnr";
exit
}
如果您注意到我已经注释掉了未发送的命令 - 它使用交互模式允许您在没有密码的情况下实际登录,在脚本顶部定义的用户密码......登录后,您可以像普通ssh一样键入
这是我在本地运行它:
whoami
myuser
./ssh-connection.exp localhost
spawn ssh myuser@localhost
myuser@localhost's password:
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux XXXX)
* Documentation: https://help.ubuntu.com/
Last login: Sat Sep 7 20:19:53 2013 from localhost
sudo bash
This is BASH 4.2- DISPLAY on localhost:0.0
Sat Sep 7 20:25:09 BST 2013
whoami
[20:25 myuser@myuser-DP ~] > sudo bash
whoami
This is BASH 4.2- DISPLAY on localhost:0.0
Sat Sep 7 20:25:09 BST 2013
[20:25 myuser@myuser-DP ~] > whoami
root
[20:25 myuser@myuser-DP ~] > whoami
root
在脚本中,它还执行sudo bash,这就是为什么它将我重新连接到本地主机并且我成为root的原因