Kai*_*aja 2 ssh bash bash-alias
我的本地网络中有一台 CentOS 主机,我每天都使用它来打开与 Internet 和本地网络中许多(超过 40 个)其他主机的 SSH 连接。我已经设置了 RSA 密钥对来跳过交互式身份验证和一些像这样的 bash 脚本:
[root@beta ~]# cat ~/connections/mywebsite.sh
ssh mywebsitefi@virtualserver123.hostingprovider.fi
Run Code Online (Sandbox Code Playgroud)
当我需要打开与它们的连接时,这很好用,但当我需要将scp文件发送到同一主机时就不行了。
是否可以创建等效于别名的东西来替换这样的 username@host 部分?
[root@beta ~]# scp myfile MYWEBSITE:/var/www
Run Code Online (Sandbox Code Playgroud)
使用 Tab 键自动完成别名的可能性也很棒。
我知道 bash 别名只能用作命令的第一个单词,但是还有其他方法可以实现吗?如果不在 bash 中,也许是另一个 shell?
使用 ssh、scp 和 rsync 中内置的功能。
在您的 .ssh 子目录中,创建一个“配置”文件。(chmod 0600)
在此,您可以描述要用于特定主机(或全局选项)的主机和选项。
使用您的示例:mywebsitefi@virtualserver123.hostingprovider.fi
输入以下内容:
Host MYWEBSITE
Hostname virtualserver123.hostingprovider.fi
User mywebsitefi
Port 22
Run Code Online (Sandbox Code Playgroud)
从现在开始,如果您使用“MYWEBSITE”作为主机名,它将自动提供真实的主机名、用户名、端口、选项,无论您指定什么。(我按习惯指定端口号)
我自己使用它来为面向 Internet 的 ssh 服务器指定非标准端口号/
你可以输入:
ssh MYWEBSITE
Run Code Online (Sandbox Code Playgroud)
.ssh/config 文件中的条目将填写 url、用户名、端口和选项。
scp MYWEBSITE:/somepath/somefile /home/me/
rsync -vzP /some/files MYWEBSITE:/my/home/
Run Code Online (Sandbox Code Playgroud)
也像你期望的那样工作。
如果您在 Host 行中指定多个名称,您可以使用这些名称中的任何一个来调用它,所有名称都相同。
缩进和大写无关紧要,但为了清楚起见,我喜欢这样分解。根据需要在 .ssh/config 中放置尽可能多的条目
.ssh/config 必须具有 0600 的权限(rw 用户,所有其他人都没有),否则 ssh 会抱怨并忽略该文件。
当然,ssh(1) 和 ssh_config(5) 手册页中提供了更多信息。
放置在第一个“主机”行之前的任何内容都被视为全局选项,并应用于您定义的所有条目。方便地指定连接超时、X11 转发等。
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |