scp被.bashrc中的echo打断问题

很多人喜欢在.bashrc中输出一些东西,比如一些字符画。但是,如果我们往这台机器scp东西的时候,会发现输出了短短一行数据就结束了。

这是因为echo中断了scp,scp会使用标准输入输出来传递自己的协议数据。可以通过如下方式避免这类情况:

  • 通过检查inertactive选项,可以通过这样一个判断来检查:
  • 使用tty来检查,比如:
  • 检查$SSH_TTY的值。

如此就可以区分登录的shell类型,避开对scp的影响了。

参考:SCP doesn't work when echo in .bashrc?

使用authorized_keys不生效的解决方法

配置git的公钥登陆时,配置完authorized_keys居然一直不生效,于是google之,发现原来是因为.ssh目录和下面文件的权限问题导致的,因为目录的权限已经超过了sshd的要求权限。于是我们使用下面的命令去掉 多余的写权限:

这样应该就可以了,试着git clone一下吧。
如果希望ssh公钥生效,.ssh目录的权限必须是0700, .ssh/authorized_keys文件权限必须是0600。

我们的git可以clone了以后,我们会担心有些人越权,使用git这个账户直接ssh登陆,这样似乎不太符合我们的要求。我们可以修改git的登陆shell,达到git无法使用shell登陆的目的。比如在ubuntu或者debian下:

查找passwd的git那行,可以看到下面类似的文本:

我们把shell换一下,改成git-shell:

如果我们想换成git登陆,会提示下面的信息: