标签: openssh

如何为 ARM 交叉编译 OpenSSH?

我尝试使用 Android NDK 编译 OpenSSH,但失败了。

我的尝试包括以下步骤:

  1. 交叉编译 Android 版 OpenSSL 并安装头文件/库/home/me/arm

  2. 从这里获取 OpenSSH 6.2p1

  3. 提取存档并运行./configure

    ./configure --prefix=/home/me/arm \
            --host=arm-linux-androideabi \
            --with-ssl-dir=/home/me/arm

    ...这导致了以下错误:

    getrrsetbyname.c:166:2: 错误:未知类型名称“HEADER”
  4. 修改./configure命令以包括:

    ac_cv_search_getrrsetbyname=是

    ...这解决了一个问题,但仍然因另一个错误而中止:

    /usr/include/linux/un.h:17:8:错误:重新定义“struct sockaddr_un”
  5. 再次修改./configure命令以包括:

    ac_cv_header_sys_un_h=是

    ...这让我更进一步,但仍然因错误而中止:

    channels.c:在函数“channel_prepare_select”中:
    Channels.c:2143:2:警告:函数“howmany”的隐式声明
    [-W隐式函数声明]
    channels.c:2145:45:错误:'fd_mask'未声明(在此函数中首次使用)

现在我被困住了。我已经破解了 Androidsys/select.h并发现它fd_mask没有在任何地方定义。我也无法找到./configure解决此问题的选项。还有howmany()未定义的问题。

我需要进行哪些更改才能编译程序?


编辑:我现在已经取得了一些进展。我添加了以下行来./configure解决“未定义fd_mask”错误:

--with-cflags=-Dfd_mask=int

然后我收到以下错误:

错误:“struct passwd”没有名为“pw_gecos”的成员

Android的passwdstruct没有成员pw_gecos。如果不为源代码创建实际的补丁,就不可能纠正这个问题。补丁在这里

我现在遇到以下错误:

dns.c:在函数“dns_result_totext”中:
dns.c:56:7: 错误:'ERRSET_SUCCESS' …

android arm openssh cross-compiling android-ndk

5
推荐指数
0
解决办法
4644
查看次数

运行高优先级 sshd 进程,而不将该优先级继承给子进程

我使用以下命令给 sshd 进程赋予最高优先级:

nice -n -20 /sbin/sshd
Run Code Online (Sandbox Code Playgroud)

但默认情况下它也会给子进程(/bin/sh)最高优先级。那么,是否可以为子进程赋予普通优先级(0)而不是最高优先级?

linux openssh nice

5
推荐指数
2
解决办法
2709
查看次数

Github - 有时无法通过 ssh 连接

情况

我正在使用 linux ( mint mate 17.2 ),当通过 ssh 推送到 github 时,有时连接失败,通常在重新启动计算机和网络后恢复。几天后,它可能会再次变坏,相当混乱。

通过http推送从来没有这样的问题,但它需要密码,不方便。

调试信息

通过 ssh 推送时:

debug1:连接到 github.com [192.30.252.129] 端口 22。

它卡在上面的行。

然后经过漫长的等待,得到超时提示:

debug1:连接到地址 192.30.252.129 端口 22:连接超时

ssh:连接到主机 github.com 端口 22:连接超时

致命:无法从远程存储库读取。

问题:

可能是什么原因,如何解决?


更多调试信息:

平是好的:

eric@eric-pc:~$ ping 192.30.252.129
PING 192.30.252.129 (192.30.252.129) 56(84) bytes of data.
64 bytes from 192.30.252.129: icmp_seq=1 ttl=50 time=345 ms
64 bytes from 192.30.252.129: icmp_seq=2 ttl=50 time=452 ms
64 bytes from 192.30.252.129: icmp_seq=3 ttl=50 time=373 ms
64 bytes from 192.30.252.129: icmp_seq=4 ttl=50 time=349 ms
64 …
Run Code Online (Sandbox Code Playgroud)

git ssh openssh github ssh-agent

5
推荐指数
1
解决办法
2290
查看次数

为什么 paramiko 返回 \r\n 作为换行符而不是 \n?

我正在使用一个名为“paramiko”的 python SSH 库。它的使用方式如下:

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=user_name, password=password)
chan = ssh_pool[host].get_transport().open_session()
chan.exec_command(SOME_COMMAND)
Run Code Online (Sandbox Code Playgroud)

因为我需要在sudo中执行一些命令,所以我需要在exec_command之前调用chan.get_pty()以确保有可用的 tty 。

我发现在调用 get_pty() 后,标准输出从远程服务器返回,使用 \r\n 作为换行符而不是 \n。

例如:

>>> chan = ssh.get_transport().open_session()
>>> chan.exec_command("echo hello world")
>>> chan.recv(1000)
b'hello world\n'
Run Code Online (Sandbox Code Playgroud)

调用 get_pty() 后:

>>> chan = ssh.get_transport().open_session()
>>> chan.get_pty()
>>> chan.exec_command("echo hello world")
>>> chan.recv(1000)
b'hello world\r\n'
Run Code Online (Sandbox Code Playgroud)

我做了一些网络搜索,但找不到任何连接到pty / tty / newline / \r\n 的内容

我担心什么会导致这种变化。

为什么 paramiko 返回 \r\n 作为换行符而不是 \n?

python openssh tty paramiko pty

5
推荐指数
1
解决办法
5048
查看次数

SSH 窗口大小对 paramiko 有何影响

我正在构建一个应用程序,它通过 SSH 连接到 Cisco 设备以收集show命令的输出。我正在 python 中使用 paramiko 模块来完成此任务。

在将命令输出与 的输出进行比较时plink,发现 paramiko 的输出被截断了。尝试使用非缓冲和增加缓冲区大小,但没有帮助。后来尝试使用window_size参数,似乎有效。

下面是我的代码:

import paramiko
sshclient = None
try:
    sshclient = paramiko.SSHClient()
    sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    sshclient.connect('mydevice', username='admin', password='admin12345')
    chan = sshclient.get_transport().open_session(window_size=500000)
    chan.settimeout(10800)
    chan.exec_command('show tech-support fcip')

    value = chan.recv(1024)
    while value:
        print(value)
        value = chan.recv(1024)

finally:
    if sshclient:
        sshclient.close()
Run Code Online (Sandbox Code Playgroud)

根据 paramiko运输文件,default_window_size=2097152;1597152 小于default_value。

部分日志输出也是default_window_size=2097152

Authentication (password) successful!
[chan 0] Max packet in: 32768 bytes
[chan 0] Max packet out: 32768 bytes …
Run Code Online (Sandbox Code Playgroud)

ssh openssh paramiko python-2.7

5
推荐指数
1
解决办法
5668
查看次数

通过 SSH 连接到 Windows 主机时,docker-machine 出现“错误检查 TLS 连接:主机未运行”

我有一个运行 docker 实例和默认 docker-machine 虚拟机的远程 Windows 主机。当我通过 SSH 连接到主机并尝试运行任何 docker-machine 命令时,即

> eval $(docker-machine env default --shell bash)
Run Code Online (Sandbox Code Playgroud)

docker-machine 发出“检查 TLS 连接时出错:主机未运行。”

我在 StackOverflow 上搜索,发现其他人重新生成证书并取得成功的案例,所以我尝试了这个,但没有成功。我重新启动了 docker-machine 虚拟机,但还是没有成功。

如果 docker-machine 命令在本地运行而不是通过 ssh,我可以很好地使用它们,但我最终需要能够 ssh 进入主机并运行命令。我在 cygwin 上使用 openssh。PATH 设置正确,如果我将 env 命令的输出放入我的.ssh/environment文件中,我什至可以运行 docker 命令,例如docker ps. 我只是无法与 docker-machine 虚拟机交互。

windows cygwin openssh docker

5
推荐指数
1
解决办法
3477
查看次数

OpenSSH 7.3p1 构建:配置仅找到旧版本的 OpenSSL 库

我正在尝试在已安装旧 OpenSSL 版本的 Linux 机器中构建OpenSSH 7.3p1 。

\n\n

首先,我已成功编译OpenSSL 1.0.2h并安装在 中/opt/openssh-1.0.2h,而不是/usr旧 OpenSSL 版本所在的位置。

\n\n
tar xzf openssl-1.0.2h.tar.gz\ncd openssl-1.0.2h\n./config --prefix=/opt/openssl-1.0.2h shared\nmake depend\nmake\nmake test\nmake install\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我继续使用 OpenSSH:

\n\n
tar xzf openssh-7.3p1.tar.gz\ncd openssh-7.3p1\n./configure --prefix=/opt/openssh-7.3p1 --with-openssl=/opt/openssl-1.0.2h\n
Run Code Online (Sandbox Code Playgroud)\n\n

configure脚本失败并显示以下错误消息:

\n\n
checking OpenSSL header version... 0090802f (OpenSSL 0.9.8e-rhel5 01 Jul 2008)\nchecking OpenSSL library version... configure: error: OpenSSL >= 0.9.8f required (have "0090802f (OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008)")\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我使用,会显示相同的消息--with-ssl-dir=/opt/openssl-1.0.2h/ssl

\n\n

该工具findssl.sh(位于子目录中contrib)可以正确找到所有 …

linux openssl openssh build rhel5

5
推荐指数
1
解决办法
5819
查看次数

git push 在 bash 中使用 ssh-agent 而不是 gui

使用 git for windows (git-scm.com) 和脚本,我可以让 Bash 停止询问密码,但我似乎无法从 git GUI 中删除密码提示。

远程的 url 正在使用 ssh 链接(见下文),所以我很确定这不是问题。但我不是 git 或 SSH 专家。

git@gitlab.com:repo
Run Code Online (Sandbox Code Playgroud)

已使用提供的密码创建 SSH 密钥 (ED25519),并将公钥添加到托管帐户。SSH 密钥存储在典型位置C:\Users\<user>\.ssh\id_ed25519Help->Show SSH Key在 GUI 中单击时,它会显示我正在使用的 ssh 密钥。ssh-agent 正在后台运行,并且 ssh 密钥已通过以下设置添加到 ssh-agent。

设置 ssh-agent 我使用了这里提供的代码(复制并粘贴在下面以供参考).bashrcC:\Users\<user>路径下创建文件。一切似乎都在 bash 提示符下按预期运行,但在 Git GUI 下却没有。

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null …
Run Code Online (Sandbox Code Playgroud)

git openssh ssh-agent windows-10 git-for-windows

5
推荐指数
1
解决办法
567
查看次数

来自共享 Gitlab 运行程序的 SSH 停止工作

这以前确实有效!

我的管道中的部署步骤是通过 SSH 连接到 DO 框并从 Docker 注册表中提取代码。如前所述,这之前是有效的,这是我当时deploy的一步,从这里.gitlab-ci.yml得到了很好的灵感:Using SSH

deploy:
  stage: deploy
  image: docker:stable-dind
  only:
    - master
  services:
    # Specifying the DinD version here as the latest DinD version introduced a timeout bug
    # Highlighted here: https://forum.gitlab.com/t/gitlab-com-ci-stuck-on-docker-build/34401/2
    - docker:19.03.5-dind
  variables:
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: ""
  environment:
    name: production
  when: manual
  before_script:
    - mkdir -p ~/.ssh
    - echo "$DEPLOYMENT_SERVER_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    - eval "$(ssh-agent -S)"
    - …
Run Code Online (Sandbox Code Playgroud)

ssh openssh gitlab gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
1647
查看次数

docker:如何在容器之间共享 ssh 密钥?

我有 4 个容器,配置如下 ( docker-compose.yml):

version: '3'
networks:
  my-ntwk:
    ipam:
      config:
        - subnet: 172.20.0.0/24
services:
  f-app:
    image: f-app
    tty: true
    container_name: f-app
    hostname: f-app.info.my
    ports:
      - "22:22"
    networks:
      my-ntwk:
        ipv4_address: 172.20.0.5
    extra_hosts:
      - "f-db.info.my:172.20.0.6"
      - "p-app.info.my:172.20.0.7"
      - "p-db.info.my:172.20.0.8"
    depends_on:
      - f-db
      - p-app
      - p-db
  f-db:
    image: f-db
    tty: true
    container_name: f-db
    hostname: f-db.info.my
    networks:
      my-ntwk:
        ipv4_address: 172.20.0.6
  p-app:
    image: p-app
    tty: true
    container_name: p-app
    hostname: p-app.info.my
    networks:
      my-ntwk:
        ipv4_address: 172.20.0.7
  p-db:
    image: p-db
    tty: true
    container_name: prod-db
    hostname: …
Run Code Online (Sandbox Code Playgroud)

ssh openssh docker dockerfile docker-compose

5
推荐指数
1
解决办法
6399
查看次数