Ala*_*air 30 linux centos bash
每当我登录到我的 Linux 服务器时,我都希望自动运行几个命令(设置一些变量、更改位置等)
这需要在用户登录时完成,而不是在系统启动时完成。
我怎样才能设置它来做到这一点?
Dav*_*d Z 40
将命令放入~/.bashrc
. 每次登录时都会执行其中的任何内容。
如果您只需要在通过 ssh 登录时运行命令(而不是在物理登录时运行),您可能会测试SSH_CONNECTION
环境变量是否存在,并且只有在发现它存在时才运行命令。
Lla*_*don 20
如果您希望所有用户都使用它,只需将它放在 ~/.bashrc 或 /etc/bash.bashrc 中:
if [[ -n $SSH_CONNECTION ]] ; then
echo "I'm logged in remotely"
fi
Run Code Online (Sandbox Code Playgroud)
Dmi*_*yev 12
或者,您可以指定在调用期间运行的命令ssh
:
$ ssh -t server 'cmd; exec bash -l'
Run Code Online (Sandbox Code Playgroud)
列表中的最后一个命令应该在您首选的 shell 中启动交互式会话。如果您有很多命令要运行,请考虑在 SSH 服务器上创建一个脚本文件。
其实~/.ssh/rc
是为你添加命令运行时,正确的地方,你登录,而不是系统的任何用户。
~/.ssh/rc
Commands in this file are executed by ssh when the user logs in,
just before the user's shell (or command) is started. See the
sshd(8) manual page for more information.
Run Code Online (Sandbox Code Playgroud)
如果使用 SSHconfig
文件进行连接,则可以嵌入一个启动命令,该命令仅在连接主机时执行。
为此,在~/.ssh/config
客户端计算机上插入/编辑以下内容:
Host myhost
HostName *.*.*.*
User root
RequestTTY force
RemoteCommand cd / && bash -i
Run Code Online (Sandbox Code Playgroud)
输入适当的主机名,Port XX
如果端口不是 22,则附加一个新行。示例将cd
位于服务器的根目录中。&& bash -i
并且RequestTTY force
对于继续使用远程终端至关重要。
要连接到您的主机,您必须在目标计算机上安装您的公钥,您可以像这样检索:
Host myhost
HostName *.*.*.*
User root
RequestTTY force
RemoteCommand cd / && bash -i
Run Code Online (Sandbox Code Playgroud)
并像这样在远程安装:
cat ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样简单地连接机器:
mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 644 ~/.ssh/authorized_keys && echo "YOUR_PUBLIC_KEY" >> ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
它将连接并执行RemoteCommand
.
归档时间: |
|
查看次数: |
83538 次 |
最近记录: |