diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp
index 0578238785b93da452bf12ace333b5b1de52faff..613da082c341a1f437387cfab940e41b2c931c9b 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp
@@ -37,6 +37,7 @@
 #include "maemosettingspage.h"
 #include "maemotoolchain.h"
 #include "maemorunconfiguration.h"
+#include "ne7sshobject.h"
 
 #include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/coreconstants.h>
@@ -85,6 +86,8 @@ MaemoManager::MaemoManager()
     pluginManager->addObject(m_packageCreationFactory);
     pluginManager->addObject(m_settingsPage);
     pluginManager->addObject(m_gdbSettingsPage);
+
+    Ne7SshObject::instance();
 }
 
 MaemoManager::~MaemoManager()
@@ -97,6 +100,7 @@ MaemoManager::~MaemoManager()
     pluginManager->removeObject(m_settingsPage);
     pluginManager->removeObject(m_gdbSettingsPage);
 
+    Ne7SshObject::removeInstance();
     m_instance = 0;
 }
 
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.cpp
index 813f09333f36dee461fdaa96d4096c703ab45f2c..5058b011daf4e991bc50e3a28cc9297855aa1aac 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.cpp
@@ -42,6 +42,7 @@
 #include "maemosshconnection.h"
 
 #include "maemodeviceconfigurations.h"
+#include "ne7sshobject.h"
 
 #include <ne7ssh.h>
 
@@ -55,8 +56,6 @@
 namespace Qt4ProjectManager {
 namespace Internal {
 namespace {
-    ne7ssh ssh;
-
     char *alloc(size_t n)
     {
         return new char[n];
@@ -67,7 +66,9 @@ namespace {
 
 MaemoSshConnection::MaemoSshConnection(const MaemoDeviceConfig &devConf,
                                        bool shell)
-    : m_channel(-1), m_stopRequested(false)
+    : ssh(Ne7SshObject::instance()->get()),
+      m_channel(-1),
+      m_stopRequested(false)
 {
     const QString *authString;
     int (ne7ssh::*connFunc)(const char *, int, const char *, const char *, bool, int);
@@ -78,7 +79,7 @@ MaemoSshConnection::MaemoSshConnection(const MaemoDeviceConfig &devConf,
         authString = &devConf.keyFile;
         connFunc = &ne7ssh::connectWithKey;
     }
-    m_channel = (ssh.*connFunc)(devConf.host.toLatin1(), devConf.sshPort,
+    m_channel = (ssh.data()->*connFunc)(devConf.host.toLatin1(), devConf.sshPort,
         devConf.uname.toAscii(), authString->toLatin1(), shell, devConf.timeout);
     if (m_channel == -1)
         throw MaemoSshException(tr("Could not connect to host"));
@@ -87,12 +88,12 @@ MaemoSshConnection::MaemoSshConnection(const MaemoDeviceConfig &devConf,
 MaemoSshConnection::~MaemoSshConnection()
 {
     qDebug("%s", Q_FUNC_INFO);
-    ssh.close(m_channel);
+    ssh->close(m_channel);
 }
 
 const char *MaemoSshConnection::lastError()
 {
-    return ssh.errors()->pop(channel());
+    return ssh->errors()->pop(channel());
 }
 
 void MaemoSshConnection::stop()
@@ -104,7 +105,7 @@ MaemoInteractiveSshConnection::MaemoInteractiveSshConnection(const MaemoDeviceCo
     : MaemoSshConnection(devConf, true), m_prompt(0)
 {
     m_prompt = devConf.uname == QLatin1String("root") ? "# " : "$ ";
-    if (!ssh.waitFor(channel(), m_prompt, devConf.timeout)) {
+    if (!ssh->waitFor(channel(), m_prompt, devConf.timeout)) {
         const QString error
             = tr("Could not start remote shell: %1").arg(lastError());
         throw MaemoSshException(error);
@@ -113,13 +114,13 @@ MaemoInteractiveSshConnection::MaemoInteractiveSshConnection(const MaemoDeviceCo
 
 MaemoInteractiveSshConnection::~MaemoInteractiveSshConnection()
 {
-    ssh.send("exit\n", channel());
-    ssh.waitFor(channel(), m_prompt, 1);
+    ssh->send("exit\n", channel());
+    ssh->waitFor(channel(), m_prompt, 1);
 }
 
 void MaemoInteractiveSshConnection::runCommand(const QString &command)
 {
-    if (!ssh.send((command + QLatin1String("\n")).toLatin1().data(),
+    if (!ssh->send((command + QLatin1String("\n")).toLatin1().data(),
                   channel())) {
         throw MaemoSshException(tr("Error running command: %1")
                                 .arg(lastError()));
@@ -127,12 +128,12 @@ void MaemoInteractiveSshConnection::runCommand(const QString &command)
 
     bool done;
     do {
-        done = ssh.waitFor(channel(), m_prompt, 1);
+        done = ssh->waitFor(channel(), m_prompt, 1);
         const char * const error = lastError();
         if (error)
             throw MaemoSshException(tr("SSH error: %1").arg(error));
         QScopedPointer<char, QScopedPointerArrayDeleter<char> >
-            output(ssh.readAndReset(channel(), alloc));
+            output(ssh->readAndReset(channel(), alloc));
         if (output.data()) {
             emit remoteOutput(QString::fromUtf8(output.data()));
             if (!done)
@@ -150,7 +151,7 @@ MaemoSftpConnection::MaemoSftpConnection(const MaemoDeviceConfig &devConf)
     : MaemoSshConnection(devConf, false),
       sftp(new Ne7SftpSubsystem)
 {
-    if (!ssh.initSftp(*sftp, channel()) || !sftp->setTimeout(devConf.timeout))
+    if (!ssh->initSftp(*sftp, channel()) || !sftp->setTimeout(devConf.timeout))
         throw MaemoSshException(tr("Error setting up SFTP subsystem: %1")
             .arg(lastError()));
 }
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.h b/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.h
index ff13095b7bc805b9ea0a0d488b23cd043897a35b..ef9b5f8c21690838089d481ca5092331ed00a658 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.h
@@ -47,6 +47,7 @@
 #include <QtCore/QSharedPointer>
 #include <QtCore/QString>
 
+class ne7ssh;
 class Ne7SftpSubsystem;
 
 namespace Qt4ProjectManager {
@@ -79,6 +80,7 @@ protected:
     bool stopRequested() const {return m_stopRequested; }
     const char *lastError();
 
+    QSharedPointer<ne7ssh> ssh;
 private:
     int m_channel;
     volatile bool m_stopRequested;
diff --git a/src/plugins/qt4projectmanager/qt-maemo/ne7sshobject.cpp b/src/plugins/qt4projectmanager/qt-maemo/ne7sshobject.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..943f8aeb051db580c2360586582beedb4fed0b51
--- /dev/null
+++ b/src/plugins/qt4projectmanager/qt-maemo/ne7sshobject.cpp
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of Qt Creator.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "ne7sshobject.h"
+
+#include <QtCore/QMutexLocker>
+
+#include <ne7ssh.h>
+
+namespace Qt4ProjectManager {
+namespace Internal {
+
+Ne7SshObject *Ne7SshObject::instance()
+{
+    if (!m_instance)
+        m_instance = new Ne7SshObject;
+    return m_instance;
+}
+
+void Ne7SshObject::removeInstance()
+{
+    delete m_instance;
+}
+
+QSharedPointer<ne7ssh> Ne7SshObject::get()
+{
+    QMutexLocker locker(&m_mutex);
+    QSharedPointer<ne7ssh> shared = m_weakRef.toStrongRef();
+    if (!shared) {
+        shared = QSharedPointer<ne7ssh>(new ne7ssh);
+        m_weakRef = shared;
+    }
+    return shared;
+}
+
+Ne7SshObject::Ne7SshObject()
+{
+}
+
+Ne7SshObject *Ne7SshObject::m_instance = 0;
+
+} // namespace Internal
+} // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qt-maemo/ne7sshobject.h b/src/plugins/qt4projectmanager/qt-maemo/ne7sshobject.h
new file mode 100644
index 0000000000000000000000000000000000000000..deaa2b35e1867def2391491eb9514c3ff1f86351
--- /dev/null
+++ b/src/plugins/qt4projectmanager/qt-maemo/ne7sshobject.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of Qt Creator.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef NE7SSHOBJECT_H
+#define NE7SSHOBJECT_H
+
+#include <QtCore/QMutex>
+#include <QtCore/QSharedPointer>
+#include <QtCore/QWeakPointer>
+
+class ne7ssh;
+
+namespace Qt4ProjectManager {
+namespace Internal {
+
+class Ne7SshObject
+{
+public:
+    static Ne7SshObject *instance();
+    static void removeInstance();
+
+    QSharedPointer<ne7ssh> get();
+
+private:
+    Ne7SshObject();
+    Ne7SshObject(const Ne7SshObject &);
+    Ne7SshObject &operator=(const Ne7SshObject &);
+
+    static Ne7SshObject *m_instance;
+
+    QWeakPointer<ne7ssh> m_weakRef;
+    QMutex m_mutex;
+};
+
+} // namespace Internal
+} // namespace Qt4ProjectManager
+
+#endif // NE7SSHOBJECT_H
diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri b/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri
index c5118f77dedc518a9d5c58788f8c148de5959f31..b0ff93ef33f74769964f4d6bc67bdfe3bfbae08b 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri
+++ b/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri
@@ -18,7 +18,8 @@ HEADERS += \
     $$PWD/maemosshthread.h \
     $$PWD/maemotoolchain.h \
     $$PWD/maemopackagecreationstep.h \
-    $$PWD/maemopackagecreationfactory.h
+    $$PWD/maemopackagecreationfactory.h \
+    $$PWD/ne7sshobject.h
 
 SOURCES += \
     $$PWD/maemoconfigtestdialog.cpp \
@@ -35,7 +36,8 @@ SOURCES += \
     $$PWD/maemosshthread.cpp \
     $$PWD/maemotoolchain.cpp \
     $$PWD/maemopackagecreationstep.cpp \
-    $$PWD/maemopackagecreationfactory.cpp
+    $$PWD/maemopackagecreationfactory.cpp \
+    $$PWD/ne7sshobject.cpp
 
 FORMS += \
     $$PWD/maemoconfigtestdialog.ui \