Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Incompatible ssh peer (no acceptable kex algorithm)

I want to launch ros nodes on remote machines using my host computer (the computer is connected to the machine via Ethernet hub). It seems that when the launch file I made makes a ssh connection, it automatically assigns the port number, and that causes the error. Although it says it has incomptabile ssh peer, it is more likely that I need to get rid of the port value than I need to find a proper key algorithm to authenticate ssh connection. So Is there a way not to assign the port number?

Below is the script file

#!/bin/bash

# retrieve the IP address of the inet addr and assign it to the environment variable $ROS_IP

function returnIPAddr(){
    local ip_addr_new=$( echo 'password' | sudo -S nmap -sP 192.168.1.0/24 | awk '/^Nmap/{ip=$NF}/'$1'/{print ip}')
    ip_addr_new=${ip_addr_new:1:${#ip_addr_new}-2}

    echo "$ip_addr_new"
}

ip_addr=""
#ip_addr_jetson=""
#ip_addr_raspberry_pi=""
echo "assigning IP address..."
ip_addr=$( ifconfig eth0 | grep "inet " | awk -F'[: ]+' '{ print $4 }' )
echo "ip address retrieved : $ip_addr"
export ROS_MASTER_URI="http://$ip_addr:11311/"
echo "successfully exported ROS_MASTER_URI to $ROS_MASTER_URI"

#run the raspberry pi file
ip_addr_jetson=$(returnIPAddr "00:04:4B")
ip_addr_raspberry_pi=$(returnIPAddr "B8:27:EB")

echo "the address of the jetson is $ip_addr_jetson"
echo "the address of the raspberry pi is $ip_addr_raspberry_pi"

# gnome-terminal -e "./raspberry_pi.sh $ip_addr"
# gnome-terminal -e "./jetson.sh $ip_addr"

export ROSLAUNCH_SSH_UNKNOWN=1

#ssh -oHostKeyAlgorithms='ssh-rsa' $ip_addr_jetson

# build the system
catkin_make
source devel/setup.bash
# roscore

# launch the commands using roslaunch\
roslaunch main.launch jetson_ip:=$ip_addr_jetson pi_ip:=$ip_addr_raspberry_pi host_ip:=$ip_addr

This is the launch file called from the script file

<launch>
    <arg name="jetson_ip" />
    <arg name="host_ip" />
    <arg name="pi_ip" />



    <machine name="host" address="$(arg host_ip)" env-loader="/opt/ros/indigo/env.sh" user="linuxmachine" password="linux@17" default="true"/>
    <machine name="raspberry-pi" address="$(arg pi_ip)" env-loader="/opt/ros/indigo/env.sh" user="pi" password="raspberry"/>    
<machine name="tegra-ubuntu" address="$(arg jetson_ip)" ssh-port="" env-loader="/home/catkin_ws/main.sh" user="ubuntu" password="ubuntu"/>

    <group ns="host">
        <node machine="host" pkg="joy" name="joy_node" type="joy_node" />
    </group>

    <group ns="tegra-ubuntu">
        <node machine="tegra-ubuntu" pkg="camera_driver_joystick"
name="camera_driver_joystick" type="camera_driver_joystick" />
    </group>

</launch>

The env-loader script for the machine (ubuntu) is as follows:

#!/bin/bash
export ROS_WS=/home/catkin_ws
catkin_make
source $ROS_WS/devel/setup.bash
export $PATH=$ROS_ROOT/bin:$PATH
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$ROS_WS
ip_addr=$( ifconfig eth0 | grep "inet " | awk -F '[: ]+' '{print $4}' )
export ROS_MASTER_URI="http://$ip_addr:11311/"
export ROS_HOSTNAME=$ip_addr
exec #@"

I got the following error when I typed the command ./main.sh

... logging to /home/linuxmachine/.ros/log/df93fbd6-698f-11e7-909d-507b9de5e4af/roslaunch-linuxmachine-5060.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://linuxmachine:36109/
remote[192.168.1.3-0] starting roslaunch
remote[192.168.1.3-0]: creating ssh connection to 192.168.1.3:22, user[ubuntu]
remote[192.168.1.3-0]: failed to launch on tegra-ubuntu:

Unable to establish ssh connection to [ubuntu@192.168.1.3:22]: Incompatible ssh peer (no acceptable kex algorithm)

[192.168.1.3-0] killing on exit unable to start remote roslaunch child:
192.168.1.3-0 The traceback for the exception was written to the log file

Incompatible ssh peer (no acceptable kex algorithm)

I want to launch ros nodes on remote machines using my host computer (the computer is connected to the machine via Ethernet hub). It seems that when the launch file I made makes a ssh connection, it automatically assigns the port number, and that causes the error. Although it says it has incomptabile ssh peer, it is more likely that I need to get rid of the port value than I need to find a proper key algorithm to authenticate ssh connection. So Is there a way not to assign the port number?

Below is the script file

#!/bin/bash

# retrieve the IP address of the inet addr and assign it to the environment variable $ROS_IP

function returnIPAddr(){
    local ip_addr_new=$( echo 'password' | sudo -S nmap -sP 192.168.1.0/24 | awk '/^Nmap/{ip=$NF}/'$1'/{print ip}')
    ip_addr_new=${ip_addr_new:1:${#ip_addr_new}-2}

    echo "$ip_addr_new"
}

ip_addr=""
#ip_addr_jetson=""
#ip_addr_raspberry_pi=""
echo "assigning IP address..."
ip_addr=$( ifconfig eth0 | grep "inet " | awk -F'[: ]+' '{ print $4 }' )
echo "ip address retrieved : $ip_addr"
export ROS_MASTER_URI="http://$ip_addr:11311/"
echo "successfully exported ROS_MASTER_URI to $ROS_MASTER_URI"

#run the raspberry pi file
ip_addr_jetson=$(returnIPAddr "00:04:4B")
ip_addr_raspberry_pi=$(returnIPAddr "B8:27:EB")

echo "the address of the jetson is $ip_addr_jetson"
echo "the address of the raspberry pi is $ip_addr_raspberry_pi"

# gnome-terminal -e "./raspberry_pi.sh $ip_addr"
# gnome-terminal -e "./jetson.sh $ip_addr"

export ROSLAUNCH_SSH_UNKNOWN=1

#ssh -oHostKeyAlgorithms='ssh-rsa' $ip_addr_jetson

# build the system
catkin_make
source devel/setup.bash
# roscore

# launch the commands using roslaunch\
roslaunch main.launch jetson_ip:=$ip_addr_jetson pi_ip:=$ip_addr_raspberry_pi host_ip:=$ip_addr

This is the launch file called from the script file

<launch>
    <arg name="jetson_ip" />
    <arg name="host_ip" />
    <arg name="pi_ip" />



    <machine name="host" address="$(arg host_ip)" env-loader="/opt/ros/indigo/env.sh" user="linuxmachine" password="linux@17" default="true"/>
    <machine name="raspberry-pi" address="$(arg pi_ip)" env-loader="/opt/ros/indigo/env.sh" user="pi" password="raspberry"/>    
<machine name="tegra-ubuntu" address="$(arg jetson_ip)" ssh-port="" env-loader="/home/catkin_ws/main.sh" user="ubuntu" password="ubuntu"/>

    <group ns="host">
        <node machine="host" pkg="joy" name="joy_node" type="joy_node" />
    </group>

    <group ns="tegra-ubuntu">
        <node machine="tegra-ubuntu" pkg="camera_driver_joystick"
name="camera_driver_joystick" type="camera_driver_joystick" />
    </group>

</launch>

The env-loader script for the machine (ubuntu) is as follows:

#!/bin/bash
export ROS_WS=/home/catkin_ws
catkin_make
source $ROS_WS/devel/setup.bash
export $PATH=$ROS_ROOT/bin:$PATH
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$ROS_WS
ip_addr=$( ifconfig eth0 | grep "inet " | awk -F '[: ]+' '{print $4}' )
export ROS_MASTER_URI="http://$ip_addr:11311/"
export ROS_HOSTNAME=$ip_addr
exec #@"

I got the following error when I typed the command ./main.sh

... logging to /home/linuxmachine/.ros/log/df93fbd6-698f-11e7-909d-507b9de5e4af/roslaunch-linuxmachine-5060.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://linuxmachine:36109/
remote[192.168.1.3-0] starting roslaunch
remote[192.168.1.3-0]: creating ssh connection to 192.168.1.3:22, user[ubuntu]
remote[192.168.1.3-0]: failed to launch on tegra-ubuntu:

Unable to establish ssh connection to [ubuntu@192.168.1.3:22]: Incompatible ssh peer (no acceptable kex algorithm)

[192.168.1.3-0] killing on exit unable to start remote roslaunch child:
192.168.1.3-0 The traceback for the exception was written to the log file

Incompatible ssh peer (no acceptable kex algorithm)

I want to launch ros nodes on remote machines using my host computer (the computer is connected to the machine via Ethernet hub). It seems that when the launch file I made makes a ssh connection, it automatically assigns the port number, and that causes the error. Although it says it has incomptabile ssh peer, it is more likely that I need to get rid of the port value than I need to find a proper key algorithm to authenticate ssh connection. So Is there a way not to assign the port number?

Below is the script file

#!/bin/bash

# retrieve the IP address of the inet addr and assign it to the environment variable $ROS_IP

function returnIPAddr(){
    local ip_addr_new=$( echo 'password' | sudo -S nmap -sP 192.168.1.0/24 | awk '/^Nmap/{ip=$NF}/'$1'/{print ip}')
    ip_addr_new=${ip_addr_new:1:${#ip_addr_new}-2}

    echo "$ip_addr_new"
}

ip_addr=""
#ip_addr_jetson=""
#ip_addr_raspberry_pi=""
echo "assigning IP address..."
ip_addr=$( ifconfig eth0 | grep "inet " | awk -F'[: ]+' '{ print $4 }' )
echo "ip address retrieved : $ip_addr"
export ROS_MASTER_URI="http://$ip_addr:11311/"
echo "successfully exported ROS_MASTER_URI to $ROS_MASTER_URI"

#run the raspberry pi file
ip_addr_jetson=$(returnIPAddr "00:04:4B")
ip_addr_raspberry_pi=$(returnIPAddr "B8:27:EB")

echo "the address of the jetson is $ip_addr_jetson"
echo "the address of the raspberry pi is $ip_addr_raspberry_pi"

# gnome-terminal -e "./raspberry_pi.sh $ip_addr"
# gnome-terminal -e "./jetson.sh $ip_addr"

export ROSLAUNCH_SSH_UNKNOWN=1

#ssh -oHostKeyAlgorithms='ssh-rsa' $ip_addr_jetson

# build the system
catkin_make
source devel/setup.bash
# roscore

# launch the commands using roslaunch\
roslaunch main.launch jetson_ip:=$ip_addr_jetson pi_ip:=$ip_addr_raspberry_pi host_ip:=$ip_addr

This is the launch file called from the script file

<launch>
    <arg name="jetson_ip" />
    <arg name="host_ip" />
    <arg name="pi_ip" />



    <machine name="host" address="$(arg host_ip)" env-loader="/opt/ros/indigo/env.sh" user="linuxmachine" password="linux@17" password="password" default="true"/>
    <machine name="raspberry-pi" address="$(arg pi_ip)" env-loader="/opt/ros/indigo/env.sh" user="pi" password="raspberry"/>    password="password"/> 
<machine name="tegra-ubuntu" address="$(arg jetson_ip)" ssh-port="" env-loader="/home/catkin_ws/main.sh" user="ubuntu" password="ubuntu"/>
password="password"/>

    <group ns="host">
        <node machine="host" pkg="joy" name="joy_node" type="joy_node" />
    </group>

    <group ns="tegra-ubuntu">
        <node machine="tegra-ubuntu" pkg="camera_driver_joystick"
name="camera_driver_joystick" type="camera_driver_joystick" />
    </group>

</launch>

The env-loader script for the machine (ubuntu) is as follows:

#!/bin/bash
export ROS_WS=/home/catkin_ws
catkin_make
source $ROS_WS/devel/setup.bash
export $PATH=$ROS_ROOT/bin:$PATH
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$ROS_WS
ip_addr=$( ifconfig eth0 | grep "inet " | awk -F '[: ]+' '{print $4}' )
export ROS_MASTER_URI="http://$ip_addr:11311/"
export ROS_HOSTNAME=$ip_addr
exec #@"

I got the following error when I typed the command ./main.sh

... logging to /home/linuxmachine/.ros/log/df93fbd6-698f-11e7-909d-507b9de5e4af/roslaunch-linuxmachine-5060.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://linuxmachine:36109/
remote[192.168.1.3-0] starting roslaunch
remote[192.168.1.3-0]: creating ssh connection to 192.168.1.3:22, user[ubuntu]
remote[192.168.1.3-0]: failed to launch on tegra-ubuntu:

Unable to establish ssh connection to [ubuntu@192.168.1.3:22]: Incompatible ssh peer (no acceptable kex algorithm)

[192.168.1.3-0] killing on exit unable to start remote roslaunch child:
192.168.1.3-0 The traceback for the exception was written to the log file